BZOJ P2241[sdoi2011]打地鼠

来源:互联网 发布:手机扫描ip软件 编辑:程序博客网 时间:2024/05/18 01:17

直接暴力枚举锤子的长宽

然后判断

别忘了加点剪枝,不加可能会痿

#include<iostream>#include<cstdio>#include<cstring>#define inf 0x7fffffffusing 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++){for(int j=1;j<=m;j++){t[i][j]=mp[i][j];}}for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){if(t[i][j]){         if(i+x<=n+1&&j+y<=m+1){         int tmp=t[i][j];                for(int k=0;k<x;k++){                for(int l=0;l<y;l++){                       t[i+k][j+l]-=tmp;                       if(t[i+k][j+l]<0){                       return;}                   }}               }else{               return;}          }}}    ans=sum/(x*y);}int main(){cin>>n>>m;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin>>mp[i][j];           sum+=mp[i][j];        }}    for(int i=n;i>0;i--){    for(int j=m;j>0;j--){           if(sum%(i*j)==0&&sum/(i*j)<ans){           work(i,j);}        }}cout<<ans;return 0;}


0 0