正题

题目链接:https://www.luogu.com.cn/problem/P7515


题目大意

有一个n∗mn*mn∗m的矩形AAA,然后给出一个(n−1)∗(m−1)(n-1)*(m-1)(n−1)∗(m−1)的矩形BBB满足
Bi,j=Ai,j+Ai+1,j+Ai,j+1+Ai+1,j+1B_{i,j}=A_{i,j}+A_{i+1,j}+A_{i,j+1}+A_{i+1,j+1}Bi,j​=Ai,j​+Ai+1,j​+Ai,j+1​+Ai+1,j+1​

求能否构造合法矩形AAA使得0≤ai,j≤1060\leq a_{i,j}\leq 10^60≤ai,j​≤106

1≤T≤10,1≤n,m≤300,0≤bi,j≤4×1061\leq T\leq 10,1\leq n,m\leq 300,0\leq b_{i,j}\leq 4\times 10^61≤T≤10,1≤n,m≤300,0≤bi,j​≤4×106


解题思路

如果不考虑ai,ja_{i,j}ai,j​的限制显然很容易构造一个方案。

然后要考虑怎么调整到满足限制,不难发现我们每行/列进行+1/−1/+1/−1...+1/-1/+1/-1...+1/−1/+1/−1...操作不会改变bbb数组上的值,所以我们设cic_ici​表示第iii行进行了多少次,第jjj行进行了多少次,那么有
0≤ai,j±ci±dj≤1060\leq a_{i,j}±c_i±d_j\leq 10^60≤ai,j​±ci​±dj​≤106

如果我们控制使得每个位置的cic_ici​和djd_jdj​的符号不同那么就可以进行差分约束了。


code

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#define ll long long
using namespace std;
const ll N=610;
struct node{ll to,next,w;
}a[N*N];
ll T,n,m,b[N][N],c[N][N];
ll tot,cnt[N],ls[N],f[N];
bool v[N];deque<int> q;
void addl(ll x,ll y,ll w){a[++tot].to=y;a[tot].next=ls[x];ls[x]=tot;a[tot].w=w;return;
}
bool SPFA(){memset(f,0x3f,sizeof(f));memset(cnt,0,sizeof(cnt));q.push_back(1);v[1]=cnt[1]=1;f[1]=0;while(!q.empty()){ll x=q.front();v[x]=0;q.pop_front();for(ll i=ls[x];i;i=a[i].next){ll y=a[i].to;if(f[x]+a[i].w<f[y]){f[y]=f[x]+a[i].w;cnt[y]=cnt[x]+1;if(cnt[y]>=n+m&&a[i].w<0)return 1;if(!v[y]){v[y]=1;if(!q.empty()&&f[y]<f[q.front()])q.push_front(y);else q.push_back(y);}}}}return 0;
}
signed main()
{scanf("%lld",&T);while(T--){memset(ls,0,sizeof(ls));tot=0;scanf("%lld%lld",&n,&m);for(ll i=1;i<n;i++)for(ll j=1;j<m;j++)scanf("%lld",&b[i][j]);memset(c,0,sizeof(c));for(ll i=1;i<=m;i++)c[1][i]=0;for(ll i=2;i<=n;i++){c[i][1]=0;for(ll j=2;j<=m;j++)c[i][j]=b[i-1][j-1]-c[i-1][j-1]-c[i-1][j]-c[i][j-1];}for(ll i=1;i<=n;i++)for(ll j=1;j<=m;j++){if((i+j)&1)addl(i,j+n,c[i][j]),addl(j+n,i,1e6-c[i][j]);else addl(j+n,i,c[i][j]),addl(i,j+n,1e6-c[i][j]);}if(!SPFA()){puts("YES");for(ll i=1;i<=n;i++,putchar('\n'))for(ll j=1;j<=m;j++){if((i+j)&1)c[i][j]=c[i][j]+f[i]-f[j+n];else c[i][j]=c[i][j]-f[i]+f[j+n];printf("%lld ",c[i][j]);}}else puts("NO");}return 0;
}

P7515-[省选联考 2021A卷]矩阵游戏【差分约束】相关推荐

  1. P6624-[省选联考2020A卷]作业题【矩阵树定理,欧拉反演】

    正题 题目链接:https://www.luogu.com.cn/problem/P6624 题目大意 nnn个点的一张图,每条边有权值,一棵生成树的权值是所有边权和乘上边权的gcdgcdgcd,即 ...

  2. P7516-[省选联考2021A/B卷]图函数【bfs】

    正题 题目链接:https://www.luogu.com.cn/problem/P7516 题目大意 懒了,直接抄题意了 对于一张 nnn 个点 mmm 条边的有向图 GGG(顶点从 1∼n1 \s ...

  3. P7518-[省选联考2021A/B卷]宝石【主席树,二分】

    正题 题目链接:https://www.luogu.com.cn/problem/P7518 题目大意 给出nnn个点的一棵树,每个点上有不大于mmm的数字. 然后给出一个长度为ccc的各个位数不同的 ...

  4. P6623-[省选联考2020A卷]树【Trie,树上启发式合并】

    正题 题目链接:https://www.luogu.com.cn/problem/P6623 题目大意 一棵树,每个节点有一个权值valival_ivali​,定义disi,jdis_{i,j}dis ...

  5. 【学习笔记】[省选联考 2023] 填数游戏

    我不好说,因为考场上我想成二分图然后就gg了 这题不难,真的不难. ∣ T i ∣ ≤ 2 |T_i|\le 2 ∣Ti​∣≤2这个性质一看就非常亲切啊,可以看成一条 a i a_i ai​到 b i ...

  6. 大连大学两日游———2021省选联考游记

    大连大学两日游---2021省选联考游记 今年高一,今年省选就是去积累大赛经验的,为明年的主场做准备.考前参加过几次学校组织的模拟赛(死难死难 ),都得了不点分,所以本来就没多大目标,不爆零就行,但是 ...

  7. 【BZOJ4500】矩阵(差分约束)

    [BZOJ4500]矩阵(差分约束) 题面 BZOJ 然而权限题 题解 显然拆分行和列.不妨设这一行/列总共加减的值是\(p\),那么每一个限制就是两个数的和为一个特定的数.这样子不好做,反正是一个二 ...

  8. [省选联考 2020 A/B 卷] 信号传递(状压dp + 卡空间)

    problem luogu-P6622 一条道路上从左至右排列着 mmm 个信号站,初始时从左至右依次编号为 1,2,-,m1,2,\dots,m1,2,-,m,相邻信号站之间相隔 111 单位长度. ...

  9. [省选联考 2020 A/B 卷] 冰火战士(树状数组上二分)

    文章目录 problem solution(10pts) code(10pts) solution(30pts) code(30pts) solution(60pts) code(60pts) sol ...

最新文章

  1. net-tools 要被 iproute2 取代了
  2. mini2440通过JLink烧写BootLoader到Nor Flash
  3. 在linux系统下把多个终端合并在一个窗口
  4. [PHP] 算法-数组重复数字统计的PHP实现
  5. 使用gnuplot绘制直方图
  6. java 向上抛异常_java throws 向上抛出的概念问题
  7. Android的sdk、api及工程目录说明
  8. ubuntu安装codeblock的方法
  9. 印度 语言简称_保存印度的语言和文化:图卢维基百科的诞生
  10. Eigen 矩阵计算工具
  11. spark学习-43-Spark的BlockManager
  12. 自己动手写cpu pdf_教你自己动手组装电脑(第一篇:CPU)
  13. GSEA分析详细步骤
  14. wps+for+linux+字体大小,WPS for Linux(ubuntu)字体配置(字体缺失解决办法)
  15. ANSYS Workbench 目标参数优化案例分析
  16. DevOps-SRE岗位到底是什么?
  17. 绝美中国建筑!为中国摄影师鼓掌!
  18. c语言总分和平均分,用C语言编程平均分数
  19. 数据分类分级方法及典型应用场景
  20. 最新版去水印小程序搭建教程

热门文章

  1. element文件上传有文件但是后台接收为空_程序员提高篇:大规格文件(G)是如何做分片优化的?...
  2. 面试避坑手册之 Java字节流和字符流总结IO流!
  3. php-fpm 超时,PHP超时的坑
  4. mysql80重置密码_MySQL8.0修改密码问题
  5. matlab编程数字信号,MATLAB--数字信号实验.doc
  6. ubuntu mysql怎么备份_Ubuntu下MySQL备份与异地备份
  7. 卖shell看站什么意思_粤语俚语卖咸鸭蛋是什么意思?
  8. php查询类似abab,ABAB中的正则表达式匹配编号(必须相同) - php
  9. react全局状态管理_rxv: 在React中用Vue3的reactivity包实现状态管理。
  10. spring boot 中@Mapper和@Repository的区别