【BZOJ2484】[SDOI2011]打地鼠(暴力)
【BZOJ2484】[SDOI2011]打地鼠(暴力)
题面
题解
看到数据范围这题就应该是一个暴力题了。
先考虑假如我们知道了锤子的大小\(R*C\),那么显然只需要从左上角开始从左往右从上往下一个个砸就行了,因为你砸到当前位置之后左上角一定没有限制了,只有当前这个位置还有限制。所以直接暴力就是\(O(n^6)\)的了。似乎可以\(BIT\)之类的优化一下,差不多可以做到\(O(n^4log^2n)\)?
然后不够优秀,我们想想,枚举\(R*C\)之后限制是考虑左上角是否都变成了\(0\)。
如果我们\(R*1\)可以把东西砸完,即一行行的砸是能够符合条件的,并且\(1*C\)也能够砸完,即一列列也是满足条件的,那么\(R*C\)显然也是合法的,等价于我们把\(C\)列每次一起砸就好了。
那么分开枚举\(R\)和\(C\)再\(\mbox{check}\)就行了,这样子暴力的复杂度是\(O(n^4)\)就可以过了。也就是\(O(n)\)枚举,\(O(n^2)\)考虑所有位置,\(O(n)\)删掉当前位置对于后面的限制。
#include<iostream>
#include<cstdio>
using namespace std;
#define MAX 105
inline int read()
{
int x=0;bool t=false;char ch=getchar();
while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();
if(ch=='-')t=true,ch=getchar();
while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();
return t?-x:x;
}
int n,m,a[MAX][MAX],s[MAX][MAX];
int R,C,sum;
int main()
{
n=read();m=read();
for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j)
sum+=(a[i][j]=read());
for(int i=1;i<=n;++i)
{
for(int j=1;j<=n;++j)
for(int k=1;k<=m;++k)
s[j][k]=a[j][k];
for(int j=1;j<=m;++j)
for(int k=1;k+i-1<=n;++k)
for(int l=k+i-1;l>=k;--l)
s[l][j]-=s[k][j];
bool fl=true;
for(int j=1;j<=m;++j)
for(int k=1;k<=n;++k)
if(s[k][j])fl=false;
if(fl)R=i;
}
for(int i=1;i<=m;++i)
{
for(int j=1;j<=n;++j)
for(int k=1;k<=m;++k)
s[j][k]=a[j][k];
for(int j=1;j<=n;++j)
for(int k=1;k+i-1<=m;++k)
for(int l=k+i-1;l>=k;--l)
s[j][l]-=s[j][k];
bool fl=true;
for(int j=1;j<=n;++j)
for(int k=1;k<=m;++k)
if(s[j][k])fl=false;
if(fl)C=i;
}
printf("%d\n",sum/(R*C));
return 0;
}
【BZOJ2484】[SDOI2011]打地鼠(暴力)的更多相关文章
- BZOJ 2241: [SDOI2011]打地鼠 暴力
2241: [SDOI2011]打地鼠 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/pro ...
- Bzoj 2241: [SDOI2011]打地鼠 暴力,枚举,贪心
2241: [SDOI2011]打地鼠 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1022 Solved: 651[Submit][Status ...
- 洛谷P2484 [SDOI2011]打地鼠
P2484 [SDOI2011]打地鼠 题目描述 打地鼠是这样的一个游戏:地面上有一些地鼠洞,地鼠们会不时从洞里探出头来很短时间后又缩回洞中.玩家的目标是在地鼠伸出头时,用锤子砸其头部,砸到的地鼠越多 ...
- Luogu P2484 [SDOI2011]打地鼠(模拟+前缀和)
P2484 [SDOI2011]打地鼠 题意 题目描述 打地鼠是这样的一个游戏:地面上有一些地鼠洞,地鼠们会不时从洞里探出头来很短时间后又缩回洞中.玩家的目标是在地鼠伸出头时,用锤子砸其头部,砸到的地 ...
- 2241. [SDOI2011]打地鼠【暴力+剪枝】
Description 打地鼠是这样的一个游戏:地面上有一些地鼠洞,地鼠们会不时从洞里探出头来很短时间后又缩回洞中.玩家的目标是在地鼠伸出头时,用锤子砸其头部,砸到的地鼠越多分数也就越高. 游戏中的锤 ...
- B2241 打地鼠 暴力模拟
大水题!!!30分钟AC(算上思考时间),直接模拟就行,加一个判断约数的剪枝,再多加几个剪枝就可以过(数据巨水) 我也就会做暴力的题了. 题干: Description 打地鼠是这样的一个游戏:地面上 ...
- bzoj 2241: [SDOI2011]打地鼠
#include<cstdio> #include<iostream> using namespace std; ][],b[][],ans,sum; void pan(int ...
- bzoj2241: [SDOI2011]打地鼠
暴力. O(n^6)暴力卡过,72ms. 莫名其妙做这道题时感觉十分烦躁,难受,只能这样了. O(n^4)的方法是这样差分一下.判断的时候tmp=t[i][j],t[i][j]-=tmp,t[i+r] ...
- 【枚举&数据结构】【P2484】 [SDOI2011]打地鼠
Description 给定一个网格,每个格子上有一个数字.一次操作可以将 \(r~\times~c\) 的一块矩形的数字减去 \(1\).必须保证这个矩形中的数全部为正.每次操作的 \(r\) 和 ...
随机推荐
- Luogu P3768 简单的数学题
非常恶心的一道数学题,推式子推到吐血. 光是\(\gcd\)求和我还是会的,但是多了个\(ij\)是什么鬼东西. \[\sum_{i=1}^n\sum_{j=1}^nij\gcd(i,j)=\sum_ ...
- [译]React 在服务端渲染的实现
原文地址:Server-Side React Rendering 原文作者:Roger Jin React 在服务端渲染的实现 React是最受欢迎的客户端 JavaScript 框架,但你知道吗(可 ...
- 磁盘挂载问题:Fdisk最大只能创建2T分区的盘,超过2T使用parted
需求说明:云服务器上买了一块8T的磁盘,准备挂载到服务器上的/data目录下. ===================================parted命令说明=============== ...
- Docker容器学习梳理 - 容器时间跟宿主机时间同步
在Docker容器创建好之后,可能会发现容器时间跟宿主机时间不一致,这就需要同步它们的时间,让容器时间跟宿主机时间保持一致.如下: 宿主机时间 [root@slave-1 ~]# date Fri M ...
- Shell学习笔记二
一.调试脚本 调试功能是每一种编程语言都应该实现的重要特性之一,当出现一些始料未及的情况时,用它来生成脚本运行信息.调试信息可以帮你弄清楚是什么原因使得程序发生崩溃或行为异常.每位系统程序员都应该了解 ...
- ecna2017-Sheba’s Amoebas
很简单的深搜的一道题,由于这道题要找环的个数,并且认为相连当一个点的8个方向种中有一个方向和这个点相连. 这个题做法无非就是暴力每个点,然后满足条件的深搜即可. 感觉我自己的代码写的很无趣,大佬的代码 ...
- sql server选取第m行到第n行的元组
现在有一个表Questioin,主码是qid,要求选择第m行到第n行的元组 //方法一:效率最低 //错误:如果n<m,将选取前n条数据,如果n>=m,将选取从m+1开始的n条数据 sel ...
- 分布式版本控制系统Git的安装与使用 第二次作业
(本次作业要求来自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2103) 一.安装Git bash软件和安装notepad++ 二 ...
- vue props 用法(转载)
前面的话 组件接受的选项大部分与Vue实例一样,而选项props是组件中非常重要的一个选项.在 Vue 中,父子组件的关系可以总结为 props down, events up.父组件通过 props ...
- windows下net命令失败
D:\apache-tomcat-7.0.57\bin>net start mysql57发生系统错误 5. 拒绝访问. 以管理员身份运行 run as administrator 打开cmd. ...