• 题意:给一个\(nXm\)的矩阵,可以选取\(aXb\)的子矩阵,使子矩阵中的所有元素减一,问最后是否能使矩阵中所有元素变为\(0\).

  • 题解:首先贪心,我们看最左上角的元素,如果\(g[1][1]\ge0\),那么我们就要对其子矩阵的所有元素减去\(g[1][1]\),然后因为\(g[1][1]\)已经是\(0\)了,假如\(g[1][2]\)存在的话,我们就只能让它成为子矩阵的左上角然后再对所有子矩阵减去\(g[1][2]\),以此类推,但是直接暴力的话复杂度会炸,我们需要用数据结构来维护,直接用二维差分即可,每次枚举到某个元素的时候判断它是否不小于\(0\),如果不是就不合法.

  • 代码:

    int t;
    int n,m,a,b;
    int g[1010][1010];
    int p[1010][1010]; void updata(int i,int j,int ii,int jj,int c){
    p[i][j]+=c;
    p[ii+1][j]-=c;
    p[i][jj+1]-=c;
    p[ii+1][jj+1]+=c;
    } void solve(){
    n=read(),m=read(),a=read(),b=read();
    for(int i=1;i<=n;++i){
    for(int j=1;j<=m;++j){
    g[i][j]=read();
    p[i][j]=g[i][j]-g[i-1][j]-g[i][j-1]+g[i-1][j-1];
    }
    } for(int i=1;i<=n;++i){
    for(int j=1;j<=m;++j){
    p[i][j]=p[i][j]+p[i-1][j]+p[i][j-1]-p[i-1][j-1];
    if(p[i][j]<0){
    puts("QAQ");
    return;
    }
    else if(p[i][j]>0){
    if(i+a-1>n || j+b-1>m){
    puts("QAQ");
    return;
    }
    else updata(i,j,i+a-1,j+b-1,-p[i][j]);
    }
    }
    }
    puts("^_^");
    } int main() {
    //ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    t=read();
    while(t--){
    solve();
    }
    return 0;
    }

最新文章

  1. UIApplication
  2. 如何在IamgeButton上面添加文字
  3. SVN 服务启动报错 0x8007042a
  4. 微软正式发布Visual Studio 2013 Update 3 (2013.3) RTM
  5. Android入门(六)碎片
  6. python一
  7. JavaScript String 对象
  8. 内存的分配VS回收&amp;构造函数VS析构函数
  9. gvim-ide plugins
  10. Linux下安装loadrunner步骤及遇到的问题
  11. 各种文件的ContentType
  12. iOS 程序间跳转传参(支付和地图)
  13. VB6文件操作自定义函数合集之一
  14. kubernetes进阶之四:Label和Label Selector
  15. Want To Say Something
  16. Web浏览器与Web服务器之间的通信过程
  17. ob_start用法详解
  18. Markdown基本使用方法
  19. jQuery Ajax方式上传文件实现暂停或取消上传
  20. UI控件篇——UIPageControl及其自定义

热门文章

  1. CTFshow-萌新赛杂项_签到
  2. druid discard long time none received connection问题解析
  3. the7主题 一个强大的wordpress 主题 html5拖拽式建站系统
  4. php artisan db:seed 报错
  5. The Go Blog Getting to Go: The Journey of Go&#39;s Garbage Collector
  6. okhttp踩坑
  7. ubuntu中如何安装selenium+chrome(headless)无界面浏览器?
  8. Java 实现Redis客户端,服务端
  9. Golang之垃圾回收
  10. MySQL 数据库性能调优