洛谷 2484 [SDOI2011]打地鼠

【题解】
n^6的做法很好想,然而这样复杂度不对。。
然后我们可以发现R和C可以分开求,这样复杂度降到了n^4. 使用树状数组可以把复杂度降到n^3logn,可以顺利通过。
#include<cstdio>
#include<algorithm>
#define N 1010
#define rg register
#define lowbit (x&-x)
using namespace std;
int n,m,r,c,ans,a[N][N],b[N],t[N];
inline int read(){
int k=,f=; char c=getchar();
while(c<''||c>'')c=='-'&&(f=-),c=getchar();
while(''<=c&&c<='')k=k*+c-'',c=getchar();
return k*f;
}
inline void add(int x,int y){
for(;x<=n;x+=lowbit) t[x]+=y;
}
inline int query(int x){
int ret=; for(;x;x-=lowbit) ret+=t[x]; return ret;
}
inline bool check1(int len){
for(rg int j=;j<=n;j++){
for(rg int i=;i<=m;i++) b[i]=a[j][i];
for(rg int i=;i<=m-len+;i++){
if(b[i]<) return ;
for(rg int k=i+;k<=i+len-;k++) b[k]-=b[i]; b[i]=;
}
for(rg int i=m-len+;i<=m;i++) if(b[i]!=) return ;
// for(rg int i=1;i<=m;i++) printf("%d ",b[i]); puts("");
}
return ;
}
inline bool check2(int len){
for(rg int j=;j<=m;j++){
for(rg int i=;i<=n;i++) b[i]=a[i][j];
for(rg int i=;i<=n-len+;i++){
if(b[i]<) return ;
for(rg int k=i+;k<=i+len-;k++) b[k]-=b[i]; b[i]=;
}
for(rg int i=n-len+;i<=n;i++) if(b[i]!=) return ;
// for(rg int i=1;i<=m;i++) printf("%d ",b[i]); puts("");
}
return ;
}
int main(){
n=read(); m=read();
for(rg int i=;i<=n;i++)
for(rg int j=;j<=m;j++) a[i][j]=read(),ans+=a[i][j];
for(rg int i=m;i>=;i--) if(check1(i)){
c=i; break;
}
for(rg int i=n;i>=;i--) if(check2(i)){
r=i; break;
}
printf("%d\n",ans/r/c);
return ;
}
洛谷 2484 [SDOI2011]打地鼠的更多相关文章
- 洛谷P2484 [SDOI2011]打地鼠
P2484 [SDOI2011]打地鼠 题目描述 打地鼠是这样的一个游戏:地面上有一些地鼠洞,地鼠们会不时从洞里探出头来很短时间后又缩回洞中.玩家的目标是在地鼠伸出头时,用锤子砸其头部,砸到的地鼠越多 ...
- [洛谷P2491] [SDOI2011]消防
洛谷题目链接:[SDOI2011]消防 题目描述 某个国家有n个城市,这n个城市中任意两个都连通且有唯一一条路径,每条连通两个城市的道路的长度为zi(zi<=1000). 这个国家的人对火焰有超 ...
- BZOJ2243 洛谷2486 [SDOI2011]染色 树链剖分
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ2243 题目传送门 - 洛谷2486 题意概括 一棵树,共n个节点. 让你支持以下两种操作,共m次操 ...
- 洛谷 P2495 [SDOI2011]消耗战(虚树,dp)
题面 洛谷 题解 虚树+dp 关于虚树 了解一下 具体实现 inline void insert(int x) { if (top == 1) {s[++top] = x; return ;} int ...
- 洛谷 P2486 [SDOI2011]染色/bzoj 2243: [SDOI2011]染色 解题报告
[SDOI2011]染色 题目描述 给定一棵有n个节点的无根树和m个操作,操作有2类: 1.将节点a到节点b路径上所有点都染成颜色c: 2.询问节点a到节点b路径上的颜色段数量(连续相同颜色被认为是同 ...
- 洛谷 P2485 [SDOI2011]计算器 解题报告
P2485 [SDOI2011]计算器 题目描述 你被要求设计一个计算器完成以下三项任务: 1.给定y.z.p,计算y^z mod p 的值: 2.给定y.z.p,计算满足xy ≡z(mod p)的最 ...
- 洛谷P2495 [SDOI2011]消耗战(虚树dp)
P2495 [SDOI2011]消耗战 题目链接 题解: 虚树\(dp\)入门题吧.虚树的核心思想其实就是每次只保留关键点,因为关键点的dfs序的相对大小顺序和原来的树中结点dfs序的相对大小顺序都是 ...
- 洛谷 P2486 [SDOI2011]染色 树链剖分
目录 题面 题目链接 题目描述 输入输出格式 输入格式 输出格式 输入输出样例 输入样例: 输出样例: 说明 思路 PushDown与Update Q AC代码 总结与拓展 题面 题目链接 P2486 ...
- ●洛谷P2495 [SDOI2011]消耗战
题链: https://www.luogu.org/problemnew/show/P2495题解: 虚树入门,树形dp 推荐博客:http://blog.csdn.net/lych_cys/arti ...
随机推荐
- IntelliJ IDEA 缓存和索引介绍
转自:https://www.cnblogs.com/zhanghaibinblogs/p/6722061.html IDEA 在首次加载项目的时候都会创建索引,IDEA 的缓存和索引主要是用来加快文 ...
- 20. Extjs学习笔记——Ext.data.JsonStore使用说明
Ext.data.JsonStore继承于Ext.data.Store,使得从远程JSON数据创建stores更为方便的简单辅助类.JsonStore合成了Ext.data.HttpProxy与Ext ...
- bzoj4720: [Noip2016]换教室(期望dp)
4720: [Noip2016]换教室 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 1294 Solved: 698[Submit][Status ...
- 一张图带你了解-常见面试之JUC包详解
面试时经常问到JUC包下的类及特性,现在用一张图总结下
- 第三章 K近邻法(k-nearest neighbor)
书中存在的一些疑问 kd树的实现过程中,为何选择的切分坐标轴要不断变换?公式如:x(l)=j(modk)+1.有什么好处呢?优点在哪?还有的实现是通过选取方差最大的维度作为划分坐标轴,有何区别? 第一 ...
- json和Jsonp 使用总结(1)
1.Json的使用 $.getJSON("subPreview", { jsonDatas: JSON.stringify(jsonData) }, function(data) ...
- JS数组、outerHtml、className
//对象转换为数组function obj(){for(var i=0;i<arguments.length;i++){ this[i]=arguments[i]; }} var o2=new ...
- Generating RSA keys in PKCS#1 format in Java--转
原文地址:https://stackoverflow.com/questions/7611383/generating-rsa-keys-in-pkcs1-format-in-java When I ...
- 构建一个.net的干货类库,以便于快速的开发 - 前言
前言: 工作已经快两年了,项目也做过不少,不知道大家有没有一个习惯,就是把在做项目过程中那些好的方法记录下来.我觉得这个习惯在开发的过程中还是很有用的,举个例子,我之前做过一个支付宝的支付功能,然后把 ...
- js一键导出Excel
HTML: 1 <div class="container"> 2 <table id="backViewTable" class=" ...