P7515-[省选联考 2021A卷]矩阵游戏【差分约束】
正题
题目链接: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卷]矩阵游戏【差分约束】相关推荐
- P6624-[省选联考2020A卷]作业题【矩阵树定理,欧拉反演】
正题 题目链接:https://www.luogu.com.cn/problem/P6624 题目大意 nnn个点的一张图,每条边有权值,一棵生成树的权值是所有边权和乘上边权的gcdgcdgcd,即 ...
- P7516-[省选联考2021A/B卷]图函数【bfs】
正题 题目链接:https://www.luogu.com.cn/problem/P7516 题目大意 懒了,直接抄题意了 对于一张 nnn 个点 mmm 条边的有向图 GGG(顶点从 1∼n1 \s ...
- P7518-[省选联考2021A/B卷]宝石【主席树,二分】
正题 题目链接:https://www.luogu.com.cn/problem/P7518 题目大意 给出nnn个点的一棵树,每个点上有不大于mmm的数字. 然后给出一个长度为ccc的各个位数不同的 ...
- P6623-[省选联考2020A卷]树【Trie,树上启发式合并】
正题 题目链接:https://www.luogu.com.cn/problem/P6623 题目大意 一棵树,每个节点有一个权值valival_ivali,定义disi,jdis_{i,j}dis ...
- 【学习笔记】[省选联考 2023] 填数游戏
我不好说,因为考场上我想成二分图然后就gg了 这题不难,真的不难. ∣ T i ∣ ≤ 2 |T_i|\le 2 ∣Ti∣≤2这个性质一看就非常亲切啊,可以看成一条 a i a_i ai到 b i ...
- 大连大学两日游———2021省选联考游记
大连大学两日游---2021省选联考游记 今年高一,今年省选就是去积累大赛经验的,为明年的主场做准备.考前参加过几次学校组织的模拟赛(死难死难 ),都得了不点分,所以本来就没多大目标,不爆零就行,但是 ...
- 【BZOJ4500】矩阵(差分约束)
[BZOJ4500]矩阵(差分约束) 题面 BZOJ 然而权限题 题解 显然拆分行和列.不妨设这一行/列总共加减的值是\(p\),那么每一个限制就是两个数的和为一个特定的数.这样子不好做,反正是一个二 ...
- [省选联考 2020 A/B 卷] 信号传递(状压dp + 卡空间)
problem luogu-P6622 一条道路上从左至右排列着 mmm 个信号站,初始时从左至右依次编号为 1,2,-,m1,2,\dots,m1,2,-,m,相邻信号站之间相隔 111 单位长度. ...
- [省选联考 2020 A/B 卷] 冰火战士(树状数组上二分)
文章目录 problem solution(10pts) code(10pts) solution(30pts) code(30pts) solution(60pts) code(60pts) sol ...
最新文章
- net-tools 要被 iproute2 取代了
- mini2440通过JLink烧写BootLoader到Nor Flash
- 在linux系统下把多个终端合并在一个窗口
- [PHP] 算法-数组重复数字统计的PHP实现
- 使用gnuplot绘制直方图
- java 向上抛异常_java throws 向上抛出的概念问题
- Android的sdk、api及工程目录说明
- ubuntu安装codeblock的方法
- 印度 语言简称_保存印度的语言和文化:图卢维基百科的诞生
- Eigen 矩阵计算工具
- spark学习-43-Spark的BlockManager
- 自己动手写cpu pdf_教你自己动手组装电脑(第一篇:CPU)
- GSEA分析详细步骤
- wps+for+linux+字体大小,WPS for Linux(ubuntu)字体配置(字体缺失解决办法)
- ANSYS Workbench 目标参数优化案例分析
- DevOps-SRE岗位到底是什么?
- 绝美中国建筑!为中国摄影师鼓掌!
- c语言总分和平均分,用C语言编程平均分数
- 数据分类分级方法及典型应用场景
- 最新版去水印小程序搭建教程
热门文章
- element文件上传有文件但是后台接收为空_程序员提高篇:大规格文件(G)是如何做分片优化的?...
- 面试避坑手册之 Java字节流和字符流总结IO流!
- php-fpm 超时,PHP超时的坑
- mysql80重置密码_MySQL8.0修改密码问题
- matlab编程数字信号,MATLAB--数字信号实验.doc
- ubuntu mysql怎么备份_Ubuntu下MySQL备份与异地备份
- 卖shell看站什么意思_粤语俚语卖咸鸭蛋是什么意思?
- php查询类似abab,ABAB中的正则表达式匹配编号(必须相同) - php
- react全局状态管理_rxv: 在React中用Vue3的reactivity包实现状态管理。
- spring boot 中@Mapper和@Repository的区别