题意

一个n*m的矩阵,初始值全为0,每一行每一列操作一次可以加1或者减1,问能否操作得到给定矩阵。

分析

  • 行和列的分别的加减是可以相互抵消的,因此我们只需要考虑行的加和列的减。
  • 对于给定矩阵每一个数\(x\),假设对应行\(u\)加上\(r_u\)次,对应列\(v\)减去\(c_v\)次,即\(r_u+c_v=x\),转化为不等式,即

\[ r_u-c_v<=x \\ c_v-r_u<=-x \]

  • 对于这样的不等式,使用差分约束系统转化为图论问题,即建边\((v+n,u,x)\)和\((u,v+n,-x)\),然后判断是否有解,只需用spfa判负环即可。

代码

#include <bits/stdc++.h>
using namespace std;
const int N=1e5+50;
const int INF=0x3f3f3f3f;
int T,n,m,k,u,v,w;
struct Edge{int v,w,next;
}e[N];
int cnt,head[N];
void init(){cnt=0;memset(head,-1,sizeof(head));
}
void add(int u,int v,int w){e[cnt]=Edge{v,w,head[u]};head[u]=cnt++;
}
int vis[N],dis[N];
bool spfa(int s){for(int i=1;i<=s;i++){vis[i]=0;dis[i]=INF;}queue<int> q;q.push(s);vis[s]++;dis[s]=0;while(!q.empty()){int u=q.front();q.pop();for(int i=head[u];i!=-1;i=e[i].next){int v=e[i].v;int w=e[i].w;if(dis[v]>dis[u]+w){dis[v]=dis[u]+w;q.push(v);vis[v]++;if(vis[v]>s+1){return true;}}}}return false;
}
int main(){
//    freopen("in.txt","r",stdin);scanf("%d",&T);while(T--){scanf("%d%d%d",&n,&m,&k);init();int s=n+m+1;for(int i=1;i<s;i++){add(s,i,0);}for(int i=1;i<=k;i++){scanf("%d%d%d",&u,&v,&w);add(v+n,u,w);add(u,v+n,-w);}if(spfa(s)){printf("No\n");}else{printf("Yes\n");}}return 0;
}

转载于:https://www.cnblogs.com/zxcoder/p/11364753.html

luoguP4578_ [FJOI2018]所罗门王的宝藏相关推荐

  1. 中国石油大学 个人训练赛第五场C:所罗门王的宝藏(高斯消元)

    题目描述 据古代传说记载,所罗门王既是智慧的代表,又是财富的象征.他建立了强大而富有的国家,聚集了大批的黄金象牙和钻石,并把这些价值连城的珍宝藏在一个神秘的地方,这就是世人瞩目的"所罗门王的 ...

  2. 【BZOJ5470】【FJOI2018】—所罗门王的宝藏(BFS)

    传送门 考虑每一颗绿宝石xxx向yyy连边,把一次加看做一个点的点值加 只需要看每个环上是否恒等,bfs即可 #include<bits/stdc++.h> using namespace ...

  3. 其他-私人♂收藏(比赛记录 Mar, 2019)

    OwO 03.03 [USACO19JAN] A. Redistricting 题意:给 \(g\) ,求 \(f(n)\) . \(f(i)=f(j)+[g(i)\ge g(j)],j \in (i ...

  4. yyb省选前的一些计划

    突然意识到有一些题目的计划,才可以减少大量查水表或者找题目的时间. 所以我决定这样子处理. 按照这个链接慢慢做. 当然不可能只做省选题了. 需要适时候夹杂一些其他的题目. 比如\(agc/arc/cf ...

  5. 华为手机里的“麦田守望者”

    为了一个理由, 有人英勇地死去, 为了一个理由, 有人坚韧地生存. 华为手机里的"麦田守望者" 文 | 史中 (零)秋日故事 2020年10月,秋日的深圳暖阳轻抚,一位老大爷缓缓走 ...

  6. 算法学习之道,应有三重境界

    https://www.toutiao.com/a6712297555167805966/ 王国维先生在<人间词话>中写道:古今之成大事业.大学问者,必经过三种境界:"昨夜西风凋 ...

  7. 学好算法,有三重境界

    王国维先生在<人间词话>中写道:古今之成大事业.大学问者,必经过三种境界:"昨夜西风凋碧树.独上高楼,望尽天涯路."此第一境也."衣带渐宽终不悔,为伊消得人憔 ...

  8. 旅行大数据 -- 全球24个时区国家在同一天的生活

    耐心看完,可以对全球国家的分布有一个初步了解. 早上6点,东萨摩亚岛的人还在沉睡,这是位于南太平洋的隶属于美国的小岛屿,面积仅有199平方公里,人口5万多人. 这里的经济来源主要是金枪鱼罐头出口,当地 ...

  9. 1.4亿围观!宝藏副教授火速走红:如果不喜欢我的研究方向,我可以改!

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 "叫我'小邹'就行, 如果不喜欢我的研究方向, 我可以改& ...

  10. 竞赛比完,代码、模型怎么处理?Kaggle 大神:别删,这都是宝藏

    选自 | medium 作者 | Vladimir Iglovikov 转自 | 机器之心 那些被遗忘的竞赛项目代码.权重可能也是一笔宝藏. 很多人可能参加过许多比赛,做过许多项目,但比赛或项目结束之 ...

最新文章

  1. 运维经验分享:关于系统运维监控的几点建议
  2. 理解ASP.NET MVC Framework Action Filters(翻的)
  3. 软考高项之风险管理-攻坚记忆
  4. JAVA-抽象类/类继承
  5. 精通Android3笔记--第四章
  6. Android应用中,去掉Activity标题栏以及状态栏
  7. SAP Spartacus 4.0 的技术变化
  8. POJ 1696 Space Ant 极角排序(叉积的应用)
  9. 【安利向】入坑半年的GPU云平台,三分钟训练起飞!xiu~
  10. 使用 ‘In Place’ 直接从MySQL 5.0升级至5.7
  11. OC基础(一)——从C开始初步了解OC
  12. 【POJ-2452】Sticks Problem【二分右端点+线段树】
  13. minecraftjava版光追_我的世界:网易版终于更新狐狸生物?Java版光追技术已开始测试...
  14. cdrx7显示重新启动计算机,CorelDRAW X7检测提示警告窗口及详细安装教程方法
  15. 搜狗高速浏览器收藏夹怎么恢复 搜狗浏览器收藏夹恢复教程
  16. 初级第七旬06—初级课程第七旬试题
  17. element-ui el-upload框去除‘按 delete 键可删除‘提示
  18. 抓取整个网站图片的爬虫
  19. 黄万里诗九首[引用]
  20. access的未来发展 ieee_如何评价 IEEE Access 成为了 Top 期刊?

热门文章

  1. 如何把用Word文档转换成PNG图片
  2. 中国PET瓶坯注塑系统行业应用态势与投资前景预测报告(2022-2028年)
  3. 计算机无法验证签名,win7系统无法验证文件数字签名的解决方法
  4. RNN的梯度消失和梯度爆炸
  5. 实用插件(七)视频播放插件——ckplayer
  6. Maven第8篇:按需构建
  7. 全国计算机考试照片传不上去,成人高考报名照片传不上去怎么办
  8. linux卸载内核网卡驱动,Linux下网卡驱动的安装
  9. 移动、联通、电信APN
  10. MATLAB中对于矩阵的算术运算、关系运算、逻辑运算、转置、求逆、求和和求积