\(\\\)

\(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;
}

最新文章

  1. WCF基础
  2. xbmc的静态链接办法
  3. ApacheServer-----关于443端口被占用的解决方法
  4. opacity
  5. 在 Windows上配置NativeScript CLI
  6. .bash_profile和.bashrc的区别,ubuntu下为.profile,没有.bash_profile
  7. ZOJ 3601 Unrequited Love 浙江省第九届省赛
  8. OSX apache vhost 配置多站点时403错误解决方法
  9. 9款完美体验的HTML5/jQuery应用
  10. 用MySQL log调试程序
  11. 函数还能这样玩儿~实现类似add(1)(2)(3)的函数
  12. google chrome中如何删除一条输入网址提示
  13. recvmsg和sendmsg函数
  14. 通过xslt把xml转换成html
  15. sqlserver查询数据库中有多少个表
  16. 高校表白APP-冲刺第三天
  17. 如何导出不带.svn的文件夹项目
  18. java_GC
  19. Nginx实战-后端应用健康检查
  20. 【工作感悟】Android 开发者,如何提升自己的职场竞争力?

热门文章

  1. 【06】AngularJS&#160;控制器
  2. Linear and Logistic Regression in TensorFlow
  3. Python学习笔记 (2.1)标准数据类型之Number(数字)
  4. HDU 1540 区间合并线段树
  5. 页面加载即执行JQuery的三种方法
  6. 使用pymongo.find查询很慢的解决方式
  7. 洛谷——P2935 [USACO09JAN]最好的地方Best Spot
  8. c++面试问题的几个方向
  9. [Vue @Component] Handle Errors and Loading with Vue Async Components
  10. 设置默认訪问项目的client的浏览器版本号(IE版本号)