[ SDOI 2011 ] 打地鼠
2024-09-07 03:26:08
\(\\\)
\(Description\)
给出一个\(N\times M\)的矩阵,你可以自由确定一个\(R\times C(R,C>0)\)的矩形,使得可以多个用矩形覆盖整个矩阵,覆盖的定义是:
- 每一个矩形必须完全在矩阵内
- 每一个矩形所在的矩阵格点权值会\(-1\)
- 覆盖后整个矩阵所有格点权值全部变为\(0\)
求覆盖的最少所需矩形个数,注意,同一个覆盖所用矩形规格相同。
- \(N,M\in [1,100]\)
\(\\\)
\(Solution\)
一看这数据范围还不是乱搞
- 枚举矩形大小,然后暴力验证,该砸的就砸一锤子。
- 其实是存在一些类似剪枝的操作的,可以减掉很多无用的枚举:
- 枚举的矩形面积不能整除整个矩阵的权值和。
- 整个矩阵权值和除掉枚举的矩形面积得到的答案没有找到过的优秀。
- 砸一锤子下去发现有的点权不够用(可以枚举砸的左上角)。
- 因为有\(1\times 1\)的存在,所以不需要考虑无解的情况,暴力模拟轻松过。
\(\\\)
\(Code\)
#include<cmath>
#include<queue>
#include<cstdio>
#include<cctype>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define N 210
#define R register
#define gc getchar
using namespace std;
int n,m,sum,pos[N][N],tmp[N][N],ans=2000000000;
inline int rd(){
int x=0; bool f=0; char c=gc();
while(!isdigit(c)){if(c=='-')f=1;c=gc();}
while(isdigit(c)){x=(x<<1)+(x<<3)+(c^48);c=gc();}
return f?-x:x;
}
inline void work(int x,int y){
int res=0;
for(R int i=1;i<=n;++i)
for(R int j=1;j<=m;++j) tmp[i][j]=pos[i][j];
for(R int i=1;i<=n;++i)
for(R int j=1,now;j<=m;++j)
if(tmp[i][j]){
res+=(now=tmp[i][j]);
for(R int r=i;r<=i+x-1;++r)
for(R int c=j;c<=j+y-1;++c)
if((tmp[r][c]-=now)<0) return;
}
ans=min(ans,res);
}
int main(){
n=rd(); m=rd();
for(R int i=1;i<=n;++i)
for(R int j=1;j<=m;++j) sum+=(pos[i][j]=rd());
for(R int i=n;i>=1;--i)
for(R int j=m;j>=1;--j){
if(sum%(i*j)==0&&sum/(i*j)<ans) work(i,j);
}
printf("%d\n",ans);
return 0;
}
最新文章
- WCF基础
- xbmc的静态链接办法
- ApacheServer-----关于443端口被占用的解决方法
- opacity
- 在 Windows上配置NativeScript CLI
- .bash_profile和.bashrc的区别,ubuntu下为.profile,没有.bash_profile
- ZOJ 3601 Unrequited Love 浙江省第九届省赛
- OSX apache vhost 配置多站点时403错误解决方法
- 9款完美体验的HTML5/jQuery应用
- 用MySQL log调试程序
- 函数还能这样玩儿~实现类似add(1)(2)(3)的函数
- google chrome中如何删除一条输入网址提示
- recvmsg和sendmsg函数
- 通过xslt把xml转换成html
- sqlserver查询数据库中有多少个表
- 高校表白APP-冲刺第三天
- 如何导出不带.svn的文件夹项目
- java_GC
- Nginx实战-后端应用健康检查
- 【工作感悟】Android 开发者,如何提升自己的职场竞争力?
热门文章
- 【06】AngularJS&#160;控制器
- Linear and Logistic Regression in TensorFlow
- Python学习笔记 (2.1)标准数据类型之Number(数字)
- HDU 1540 区间合并线段树
- 页面加载即执行JQuery的三种方法
- 使用pymongo.find查询很慢的解决方式
- 洛谷——P2935 [USACO09JAN]最好的地方Best Spot
- c++面试问题的几个方向
- [Vue @Component] Handle Errors and Loading with Vue Async Components
- 设置默认訪问项目的client的浏览器版本号(IE版本号)