luoguP4578_ [FJOI2018]所罗门王的宝藏
题意
一个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]所罗门王的宝藏相关推荐
- 中国石油大学 个人训练赛第五场C:所罗门王的宝藏(高斯消元)
题目描述 据古代传说记载,所罗门王既是智慧的代表,又是财富的象征.他建立了强大而富有的国家,聚集了大批的黄金象牙和钻石,并把这些价值连城的珍宝藏在一个神秘的地方,这就是世人瞩目的"所罗门王的 ...
- 【BZOJ5470】【FJOI2018】—所罗门王的宝藏(BFS)
传送门 考虑每一颗绿宝石xxx向yyy连边,把一次加看做一个点的点值加 只需要看每个环上是否恒等,bfs即可 #include<bits/stdc++.h> using namespace ...
- 其他-私人♂收藏(比赛记录 Mar, 2019)
OwO 03.03 [USACO19JAN] A. Redistricting 题意:给 \(g\) ,求 \(f(n)\) . \(f(i)=f(j)+[g(i)\ge g(j)],j \in (i ...
- yyb省选前的一些计划
突然意识到有一些题目的计划,才可以减少大量查水表或者找题目的时间. 所以我决定这样子处理. 按照这个链接慢慢做. 当然不可能只做省选题了. 需要适时候夹杂一些其他的题目. 比如\(agc/arc/cf ...
- 华为手机里的“麦田守望者”
为了一个理由, 有人英勇地死去, 为了一个理由, 有人坚韧地生存. 华为手机里的"麦田守望者" 文 | 史中 (零)秋日故事 2020年10月,秋日的深圳暖阳轻抚,一位老大爷缓缓走 ...
- 算法学习之道,应有三重境界
https://www.toutiao.com/a6712297555167805966/ 王国维先生在<人间词话>中写道:古今之成大事业.大学问者,必经过三种境界:"昨夜西风凋 ...
- 学好算法,有三重境界
王国维先生在<人间词话>中写道:古今之成大事业.大学问者,必经过三种境界:"昨夜西风凋碧树.独上高楼,望尽天涯路."此第一境也."衣带渐宽终不悔,为伊消得人憔 ...
- 旅行大数据 -- 全球24个时区国家在同一天的生活
耐心看完,可以对全球国家的分布有一个初步了解. 早上6点,东萨摩亚岛的人还在沉睡,这是位于南太平洋的隶属于美国的小岛屿,面积仅有199平方公里,人口5万多人. 这里的经济来源主要是金枪鱼罐头出口,当地 ...
- 1.4亿围观!宝藏副教授火速走红:如果不喜欢我的研究方向,我可以改!
点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 "叫我'小邹'就行, 如果不喜欢我的研究方向, 我可以改& ...
- 竞赛比完,代码、模型怎么处理?Kaggle 大神:别删,这都是宝藏
选自 | medium 作者 | Vladimir Iglovikov 转自 | 机器之心 那些被遗忘的竞赛项目代码.权重可能也是一笔宝藏. 很多人可能参加过许多比赛,做过许多项目,但比赛或项目结束之 ...
最新文章
- 运维经验分享:关于系统运维监控的几点建议
- 理解ASP.NET MVC Framework Action Filters(翻的)
- 软考高项之风险管理-攻坚记忆
- JAVA-抽象类/类继承
- 精通Android3笔记--第四章
- Android应用中,去掉Activity标题栏以及状态栏
- SAP Spartacus 4.0 的技术变化
- POJ 1696 Space Ant 极角排序(叉积的应用)
- 【安利向】入坑半年的GPU云平台,三分钟训练起飞!xiu~
- 使用 ‘In Place’ 直接从MySQL 5.0升级至5.7
- OC基础(一)——从C开始初步了解OC
- 【POJ-2452】Sticks Problem【二分右端点+线段树】
- minecraftjava版光追_我的世界:网易版终于更新狐狸生物?Java版光追技术已开始测试...
- cdrx7显示重新启动计算机,CorelDRAW X7检测提示警告窗口及详细安装教程方法
- 搜狗高速浏览器收藏夹怎么恢复 搜狗浏览器收藏夹恢复教程
- 初级第七旬06—初级课程第七旬试题
- element-ui el-upload框去除‘按 delete 键可删除‘提示
- 抓取整个网站图片的爬虫
- 黄万里诗九首[引用]
- access的未来发展 ieee_如何评价 IEEE Access 成为了 Top 期刊?