【bzoj2241】[SDOI2011]打地鼠  暴力+乱搞

C语言打地鼠设计报告 我的其他资源都是免费的,是对于c语言初学者的帮助比较大的,其中有单片机,ARM,数据结构,window编程,MFC编程,自己编写的小游戏。 立即下载

2241: [SDOI2011]打地鼠
Time Limit: 10 Sec Memory Limit: 512 MB
Submit: 1069 Solved: 679
[Submit][Status][Discuss]
Description

打地鼠是这样的一个游戏:地面上有一些地鼠洞,地鼠们会不时从洞里探出头来很短时间后又缩回洞中。玩家的目标是在地鼠伸出头时,用锤子砸其头部,砸到的地鼠越多分数也就越高。

游戏中的锤子每次只能打一只地鼠,如果多只地鼠同时探出头,玩家只能通过多次挥舞锤子的方式打掉所有的地鼠。你认为这锤子太没用了,所以你改装了锤子,增加了锤子与地面的接触面积,使其每次可以击打一片区域。如果我们把地面看做M*N的方阵,其每个元素都代表一个地鼠洞,那么锤子可以覆盖R*C区域内的所有地鼠洞。但是改装后的锤子有一个缺点:每次挥舞锤子时,对于这R*C的区域中的所有地洞,锤子会打掉恰好一只地鼠。也就是说锤子覆盖的区域中,每个地洞必须至少有1只地鼠,且如果某个地洞中地鼠的个数大于1,那么这个地洞只会有1只地鼠被打掉,因此每次挥舞锤子时,恰好有R*C只地鼠被打掉。由于锤子的内部结构过于精密,因此在游戏过程中你不能旋转锤子(即不能互换R和C)。

你可以任意更改锤子的规格(即你可以任意规定R和C的大小),但是改装锤子的工作只能在打地鼠前进行(即你不可以打掉一部分地鼠后,再改变锤子的规格)。你的任务是求出要想打掉所有的地鼠,至少需要挥舞锤子的次数。

Hint:由于你可以把锤子的大小设置为1*1,因此本题总是有解的。

Input

第一行包含两个正整数M和N;

下面M行每行N个正整数描述地图,每个数字表示相应位置的地洞中地鼠的数量。

Output

输出一个整数,表示最少的挥舞次数。

Sample Input
3 3

1 2 1

2 4 2

1 2 1

Sample Output

4

【样例说明】

使用2*2的锤子,分别在左上、左下、右上、右下挥舞一次。

【数据规模和约定】

对于100%的数据,1<=M,N<=100,其他数据不小于0,不大于10^5

HINT

Source

第一轮Day1

题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2241

题意: 中文题。。

思路:
枚举i*j是(n^6),加上各种优化及乱搞即可;
1.首先锤子的大小先横行(列)枚举,筛法原理剪支;

        if(sum%i!=0||!can(i,1))
        {
            for(int j=i;j<=n;j+=i)
            lin[j]=-1;
        }

2.搜的判断条件:

if(sum/(i*j)>ans) continue;

代码:

#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int ma[101][101];
int tmp[101][101];
int n,m;
int t[101];
int lin[101];
int row[101];
int sum;
int ans;
bool can(int x,int y)
{
    for(int i=1;i<=n;i++)
    for(int j=1;j<=m;j++)
    tmp[i][j]=ma[i][j];

    for(int i=1;i<=n;i++)
    for(int j=1;j<=m;j++)
    if(tmp[i][j])
    {
        if(i+x>n+1||j+y>m+1) return 0;
        int tt=tmp[i][j];
        for(int ii=i;ii<i+x;ii++)
        {
            for(int jj=j;jj<j+y;jj++)
            {
                tmp[ii][jj]-=tt;
                if(tmp[ii][jj]<0) return 0;
            }

        }   
    }
    ans=sum/(x*y);
    return 1;

}
int main()
{
    scanf("%d%d",&n,&m);

    for(int i=1;i<=n;i++)
    for(int j=1;j<=m;j++)
    {
        scanf("%d",&ma[i][j]);
        sum+=ma[i][j];
    }
    can(1,1);
    for(int i=2;i<=n;i++)
    if(!lin[i])
    {
        if(sum%i!=0||!can(i,1))
        {
            for(int j=i;j<=n;j+=i)
            lin[j]=-1;
        }
    }
    for(int i=2;i<=m;i++)
    if(!row[i])
    {
        if(sum%i!=0||!can(1,i))
        {
            for(int j=i;j<=m;j+=i)
            row[j]=-1;
        }
    }
    for(int i=2;i<=n;i++)
    if(!lin[i])
    {
        for(int ii=2;ii<=m;ii++)
            t[ii]=row[ii];
        for(int j=2;j<=m;j++)   
        if(!t[j])
        {
            if(sum/(i*j)>ans) continue;
            if(sum%(i*j)!=0||!can(i,j))
            for(int k=j;k<=m;k+=j)
            t[k]=-1;
        }
    }
    printf("%d\n",ans);
}
【Unity2D】打地鼠游戏源码(C#) 一定时间内,鼠标点击出现的地鼠进行打地鼠,打中加分,反之地鼠消失,时间耗尽游戏结束,地鼠的出现频率也会随着时间的减少变高,按Esc退出。 Unity版本:2019.4.18f1c1 立即下载

相关推荐

从特斯拉到蔚来:拆解主流智能汽车的车联网架构,看它们如何实现‘车、路、云’协同

本文深度解析了特斯拉、蔚来等主流智能汽车的车联网架构,详细拆解了其‘车、路、云’协同的技术实现。从车内网络、车际通信到云端协同,分析了通信技术、系统架构等关键技术选择,揭示了不同厂商如何通过差异化布局构建竞争优势。

weixin_42525289的博客 579

地鼠的困境(最大匹配)

地鼠的困境 Description 地鼠家族面临着一个新的威胁——猎食者。   地鼠家族一共有N个地鼠和M个鼠洞,每个都位于不同的(x, y)坐标中。假如有地鼠在发觉危险以后s秒内都没有回到鼠洞里的话,就可能成为老鹰的食物。当然了,一个鼠洞只能拯救一只地鼠的命运,所有地鼠都以相等的速度v移动。地鼠家族需要设计一种策略,使得老鹰来时,易受攻击的地鼠数量最少。 Input 本题有多组数据。第1行为测试数据组数T(T<=50)。 对于每组数据,第一行4个整数n, m, s和v(n, m <= 100)

我很菜的好吧 616

CTF实战:Wireshark数据包分析从入门到精通(附经典题型解析)

本文详细介绍了Wireshark在CTF比赛中的数据包分析技巧,从基础抓包到高级协议解析,涵盖HTTP流量分析、USB键盘数据还原等实战案例。通过经典题型解析,帮助读者掌握精准过滤、文件提取等核心技能,提升CTF竞赛中的网络流量分析能力。

pz890123的博客 585

【SDOI2011】打地鼠

【SDOI2012】Longge的问题 【题目描述】 Longge的数学成绩非常好,并且他非常乐于挑战高难度的数学问题。现在问题来了: 给定一个整数N,你需要求出Σgcd(i, N)(1 【输入】 输入包含一个整数 N ,如题所示 【输出】 输出包含一个整数,为所求的答案。 【输入样例】 6 【输出样例】 15 【题解】 欧拉函数phi(x)等于不超过

OI技术宅 1274

基于MATLAB实现的克里金插值的代码

参考代码 克里金插值matlab代码 youwenfan.com/contentcsb/81657.html。

jghhh01的博客 480

【FPGA教程案例96】控制案例1——基于FPGA的自适应PID控制器verilog实现

首先,我们复习下课程传统的PID控制器,往往存在调整速度较慢,超调过大等缺点。为了解决这个问题,在实际的PID应用中,需要实时的调整PID的控制参数,以达到加快PID控制速度,降低超调等目标。目前,自适应PID控制器,一般有误差反馈调整,模糊控制器调整,神经网络调整。其中模糊控制器调整,神经网络调整较为复杂,在入门案例中不做介绍,在本课程中,我们将实现相对略微简单点的基于误差反馈调整的自适应PID控制器。

FPGA/MATLAB学习教程/源码/项目合作开发 6198

【BZOJ2241】【Sdoi2011R1D1】打地鼠

原题传送门 Description 打地鼠是这样的一个游戏:地面上有一些地鼠洞,地鼠们会不时从洞里探出头来很短时间后又缩回洞中。玩家的目标是在地鼠伸出头时,用锤子砸其头部,砸到的地鼠越多分数也就越高。 游戏中的锤子每次只能打一只地鼠,如果多只地鼠同时探出头,玩家只能通过多次挥舞锤子的方式打掉所有的地鼠。你认为这锤子太没用了,所以你改装了锤子,增加了锤子与地面的接触面积,使其每次可以击打...

b528960962901586的博客 217

Python爬虫实战:爬取携程旅游平台数据,我拆解了动态反爬+Cookie续命(附完整可运行代码)

反爬类型表现形式应对思路sign参数返回403/空数据逆向JS还原加密逻辑Cookie时效登录后1小时Cookie失效定时刷新Cookie/保存登录态行为检测爬取过快触发验证码模拟真人延时/随机点击IP封禁单IP爬取超50条数据被封付费代理池/降低请求频率爬取携程旅游平台数据的核心,不是“简单的HTTP请求”,而是“理解平台的反爬逻辑并合规适配”——从sign参数破解到Cookie维护,再到行为模拟,每一步都是对HTTP协议、前端加密、用户行为的深度理解。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1713

P2484 [SDOI2011]打地鼠 题解

锤子每次只能将每个洞里打掉一只地鼠,所以对于每次击打,都会打掉r*c只地鼠。而每次击打的范围内的每个洞里必须都要有地鼠,所以地鼠的总数必须被r*c整除。

if_OF的博客 508

手把手教你学pcie--性能调优 - 中断机制优化

在PCIe系统开发中,中断机制是主机与设备之间通信的重要组成部分。然而,不当的中断设计可能导致CPU负载过高、延迟增加等问题。本文将详细介绍如何优化PCIe系统的中断机制,提升系统性能和响应速度。传统中断(INTx):通过专用引脚发送中断信号,可能引发冲突且效率较低。消息中断(MSI):通过内存写操作发送中断消息,避免冲突并提高效率。扩展消息中断(MSI-X):基于MSI改进,支持更多独立中断向量,适用于复杂场景。选择合适的中断模式对系统性能至关重要。

MHD0815的博客 282

黑猫带你学eMMC协议第22篇:emmc可靠写详解(Write Reliability)

1 前言 1.1 声明 本文依据eMMC JEDEC5.1、网络资料及个人工作经验整理而成,如有部分错误请留言。 本文部分内容可能源自网络,侵删。 本文结合eMMC JEDEC5.1协议手册查看效果更佳。 1.2 内容提要 1、什么是可靠性写属性(Write Reliability)? 2、可靠写和普通的写有什么区别? 3、设置可靠写的流程及流程框图。 4、可靠写需要遵循哪些规则? 1.3 参考链接 本文主要参考链接:http://www.up48.com/cn/support/8_37.html 2 什么

黑猫奥利奥的博客 3119

BZOJ 2241([SDOI2011]打地鼠-二分判断+贪心)

Description 打地鼠是这样的一个游戏:地面上有一些地鼠洞,地鼠们会不时从洞里探出头来很短时间后又缩回洞中。玩家的目标是在地鼠伸出头时,用锤子砸其头部,砸到的地鼠越多分数也就越高。 游戏中的锤子每次只能打一只地鼠,如果多只地鼠同时探出头,玩家只能通过多次挥舞锤子的方式打掉所有的地鼠。你认为这锤子太没用了,所以你改装了锤子,增加了锤子与地面的接触面积,使其每次可以击打一片区域。如果我

nike0good |Oier&ACMer | 熟能生巧 2319

达摩院高清人像美肤模型ABPN的深入解析及编程实现

本文深入解析了达摩院高清人像美肤模型ABPN的原理,并提供了相应的源代码实现。ABPN模型通过自适应的反投影网络,有效地实现了人像图像的美肤处理。通过进一步的研究和优化,ABPN模型有望在人像美肤领域发挥更大的作用。低频特征提取器用于提取输入图像的低频信息,而反投影网络则负责将低频信息与原始图像结合,生成美肤后的输出图像。通过将输入图像送入ABPN模型,即可得到经过美肤处理后的输出图像。通过对输入图像进行美肤处理,可以有效地去除皮肤上的瑕疵和噪点,提升图像质量和美感。

TechPulseZ的博客 711

BZOJ 2241: [SDOI2011]打地鼠

2241: [SDOI2011]打地鼠 Time Limit: 10 Sec  Memory Limit: 512 MB Submit: 1305  Solved: 822 [Submit][Status][Discuss] Description 打地鼠是这样的一个游戏:地面上有一些地鼠洞,地鼠们会不时从洞里探出头来很短时间后又缩回洞中。玩家的目标是在地鼠伸出头时,用锤子砸其头部,

BlackJack 492

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Codevs 1564 打地鼠

Codevs 1564 打地鼠

Rising_shit的博客 834

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

BZOJ P2241[sdoi2011]打地鼠

直接暴力枚举锤子的长宽 然后判断 别忘了加点剪枝,不加可能会痿 #include #include #include #define inf 0x7fffffff using namespace std; int n,m,sum,mp[101][101],t[101][101],ans=inf; void work(int x,int y){ for(int i=1;i<=n;i++){

mdnd1234的博客 392

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

2241: [SDOI2011]打地鼠

题目链接题目大意:给定一个m*n的洞穴矩阵,每个洞穴里面有若干地鼠,我们需要选定一个r*c的锤子进行击打,每次击打必须保证r*c的范围内所有洞穴均有地鼠,且每次击打只会打掉每个洞穴恰好一只地鼠,求最小击打次数题解:由于数据水,这题O((nm)3),O((nm)2),二分乱搞都能过……O((nm)^3),O((nm)^2),二分乱搞都能过……首先枚举长和宽,然后判断可行性,判断的时候就是二维区间修改+

蒟蒻的Bzoj记录 634

P2484 [SDOI2011]打地鼠-题解报告

0x00 思路 思路很简单,直接暴力枚举边长,然后模拟即可,中间有一些小优化,不然会超时。 0x01 暴力&模拟 既然求的是最少的挥舞次数,那么肯定能挥舞,不然无法计算,所以我们写一个 check 函数,里面传入 x,yx,yx,y 表示能否用长为 xxx 和宽为 yyy 的锤子锤完所有的地鼠。由于 aaa 数组随时有可能被更改,所以我们用一个辅助数组 bbb 来存储当前每个格子的地鼠数量,我们需要依次枚举每一个格子,如果这个格子没有地鼠,跳过即可,如果有地鼠,那么需要枚举以 xxx 为长,yyy

cqbzfsk的博客 425

poj2356(二分图匹配)

题意:有m个地洞和n只地鼠的坐标,老鹰来了以后,每个洞最多只能容纳一只地鼠,每只地鼠的移动速度是v,在s秒之内如果不能移动到一个地洞中,这只地鼠就可能被老鹰捕获,问最少会有多少只地鼠有可能被老鹰捕获。 解法:二分图匹配的简单运用,匈牙利算法。 代码:/**************************************************** * author:xiefub

xiefubao的专栏 576

BZOJ2241&&P2484 [SDOI2011]打地鼠

大模拟! 枚举锤子的大小,并且一个必要条件是锤子的面积必须是地鼠总数的约数,不然肯定打不完 代码 //By AcerMo #include&lt;cmath&gt; #include&lt;cstdio&gt; #include&lt;cstring&gt; #include&lt;iostream&gt; #include&lt;algorithm&gt; using namespace...

AcerMoOi之路 514

Unity 3D 新手入门小游戏——打地鼠

30秒内,在5*5棋盘上尽可能多捶打钻出洞的地鼠吧!该游戏仅使用一个C#脚本即可完成,通过即时模式GUI(IMGUI)绘制游戏人机交互界面,仅使用GUI控件即可完成游戏内容的呈现。游戏采用MVC(Model-View-Controller)模式,将游戏分为模型、视图以及控制器三个层次。各个层次负责的功能如下:Model(模型)- 代表一个存取数据的对象。它也可以带有逻辑,在数据变化时更新控制器。View(视图)- 代表模型包含的数据的可视化。Controller(控制器)- 作用于模型和视图上。

Chaos_Gravity的博客 3594

[SDOI2011][BZOJ2241][codevs1564]打地鼠 [三星~]

SDOI2011 D1T1 ~ Description打地鼠是这样的一个游戏:地面上有一些地鼠洞,地鼠们会不时从洞里探出头来很短时间后又缩回洞中。玩家的目标是在地鼠伸出头时,用锤子砸其头部,砸到的地鼠越多分数也就越高。 游戏中的锤子每次只能打一只地鼠,如果多只地鼠同时探出头,玩家只能通过多次挥舞锤子的方式打掉所有的地鼠。你认为这锤子太没用了,所以你改装了锤子,增加了锤子与地面的接触面积,使其每次可

Loi_Seavot的博客 1264

题解 luogu P2484 【[SDOI2011]打地鼠】BZOJ2241 O(N^2.5)

这道题最好可以做到n2.5n2.5n^{2.5},但由于数据弱可以让一些错误的n2n2n^2算法AC 将行和列分开考虑。 枚举每个点时用前缀和记录要减去的数(见注释) 枚举行数(列数)时使用每一行(列)的和的gcd的约数。 #include&amp;lt;cstdio&amp;gt; #include&amp;lt;cstring&amp;gt; #include&amp;lt;algorithm&amp;gt; #include&amp;

Ansicht's Blog 314

BZOJ2241 [SDOI2011]打地鼠 【模拟】

题目 打地鼠是这样的一个游戏:地面上有一些地鼠洞,地鼠们会不时从洞里探出头来很短时间后又缩回洞中。玩家的目标是在地鼠伸出头时,用锤子砸其头部,砸到的地鼠越多分数也就越高。 游戏中的锤子每次只能打一只地鼠,如果多只地鼠同时探出头,玩家只能通过多次挥舞锤子的方式打掉所有的地鼠。你认为这锤子太没用了,所以你改装了锤子,增加了锤子与地面的接触面积,使其每次可以击打一片区域。如果我们把地面看做MN的方阵,其...

weixin_30906671的博客 177

BZOJ 2241 SDOI2011 打地鼠 线性筛+二阶差分

首先声明:此题不满足二分条件,一切写二分的题解均为误解 请注意辨明! 题目大意:给定一个m*n的洞穴矩阵,每个洞穴里面有若干地鼠,我们需要选定一个r*c的锤子进行击打,每次击打必须保证r*c的范围内所有洞穴均有地鼠,且每次击打只会打掉每个洞穴恰好一只地鼠,求最小击打次数 m,n 考虑一个1*8的洞穴,当我们把锤子设作1*4时可以完成击打,而1*3不能 故不满足单调性,二分不正确 但是一个性

世界 2834
上一篇: 【codeforces 651B - Beautiful Paintings 】 greedy(贪心)
下一篇: 【bzoj2242】[SDOI2011]计算器 数论相关(快速幂+扩展欧几里得+BSGS)
ALPS233
博客等级 码龄11年 25粉丝 191原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值