BZOJ3436——小K的农场
1、题意:大概是给一些制约限制,问是否存在合法解
2、分析:我们来观察这三个限制
农场a比农场b至少多种植了c个单位的作物 可以变成b 比 a至多多种了-c
农场a比农场b至多多种植了c个单位的作物 可以变成a 比
b至多多种了c
农场a与农场b种植的作物数一样多
就是a = b
那么利用差分约束我们可以把这个东西转为一个图,那么如果这个图中有正环那么这个图就是不合法的,如何判断有没有正环呢?
我们可以利用spfa求最短路时判负环,我们把它改成求最长路时,判正环,然后就AC了
#include <queue> #include <cstdio> #include <cstdlib> #include <cstring> #include <algorithm> using namespace std; #define M 1000010 #define inf 1047483647 inline int read(){ char ch = getchar(); int x = 0, f = 1; while(ch < '0' || ch > '9'){ if(ch == '-') f = -1; ch = getchar(); } while('0' <= ch && ch <= '9'){ x = x * 10 + ch - '0'; ch = getchar(); } return x * f; } struct Edge{ int u, v, w, next; } G[M]; int head[M], tot; int inq[M], d[M]; int n, m; inline void add(int u, int v, int w){ G[++ tot] = (Edge){u, v, w, head[u]}; head[u] = tot; } inline bool spfa(){ for(int i = 1; i <= n; i ++) d[i] = -inf; queue<int> Q; Q.push(0); while(!Q.empty()){ int x = Q.front(); Q.pop(); inq[x] = 0; for(int i = head[x]; i != -1; i = G[i].next){ if(d[G[i].v] < d[x] + G[i].w){ if(inq[G[i].v]){ return false; } d[G[i].v] = d[x] + G[i].w; Q.push(G[i].v); inq[G[i].v] = 1; } } } return true; } int main(){ n = read(), m = read(); memset(head, -1, sizeof(head)); for(int i = 1; i <= m; i ++){ int op = read(); if(op == 2){ int a = read(), b = read(), c = read(); add(a, b, c); } else if(op == 1){ int a = read(), b = read(), c = read(); add(b, a, -c); } else{ int a = read(), b = read(); add(a, b, 0); add(b, a, 0); } } for(int i = 1; i <= n; i ++) add(0, i, 0); if(spfa()) puts("Yes"); else puts("No"); return 0; }
BZOJ3436——小K的农场的更多相关文章
- bzoj3436小K的农场
bzoj3436小K的农场 题意: n个数,知道m条关系:a-b≥c.a-b≤c或a==b.问是否存在满足所有关系的情况.n≤10000,m≤10000. 题解: 差分约束.因为只要求是否满足,因此最 ...
- [bzoj3436]小K的农场_差分约束
小K的农场 bzoj-3436 题目大意:给定n个点,每个节点有一个未知权值.现在有m个限制条件,形如:点i比点j至少大c,点i比点j至多大c或点i和点j相等.问是否可以通过给所有点赋值满足所有限制条 ...
- BZOJ3436: 小K的农场(差分约束裸题&DFS优化判环)
3436: 小K的农场 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2111 Solved: 986[Submit][Status][Discus ...
- bzoj3436: 小K的农场(差分约束)
3436: 小K的农场 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1575 Solved: 690[Submit][Status][Discus ...
- bzoj3436: 小K的农场(差分约束)
3436: 小K的农场 题目:传送门 题解: 查分基础: t==1 a>=b+c t==2 b>=a-c t==3 a>=b+0 b>=a+0 跑最长路一A 代码: #i ...
- BZOJ3436 小K的农场
Description 背景 小K是个特么喜欢玩MC的孩纸... 描述 小K在MC里面建立很多很多的农场,总共n个,以至于他自己都忘记了每个农场中种植作物的具体数量了,他只记得 一些含糊的信息(共m个 ...
- BZOJ1202 [HNOI2005]狡猾的商人&&BZOJ3436小K的农场
差分约束第三题 传送门: 很明显的差分约束,d[y]-d[x-1]>=v d[y]-d[x-1]<=v 根据这个建图然后跑bellman-ford就可以了. //BZOJ 1202 //b ...
- 【BZOJ3436】小K的农场(差分约束)
[BZOJ3436]小K的农场(差分约束) 题面 由于BZOJ巨慢无比,使用洛谷美滋滋 题解 傻逼差分约束题, 您要是不知道什么是差分约束 您就可以按下\(Ctrl+W\)了 #include< ...
- 【BZOJ3436】小K的农场 差分约束
[BZOJ3436]小K的农场 Description 背景 小K是个特么喜欢玩MC的孩纸... 描述 小K在MC里面建立很多很多的农场,总共n个,以至于他自己都忘记了每个农场中种植作物的具体数量了, ...
随机推荐
- Hibernate第三次测试错题解析
此题目考查的是Hibernate查询缓存适用的场合,对于经常使用的查询语句, 如果启用了查询缓存,当第一次执行查询语句时,Hibernate会把查询结果存放在第二缓存中. 以后再次执行该查询语句时,只 ...
- WPScan用法
kali下集成的WPScan用法 1.刺探基础信息:wpscan --url http://www.example.com 2.猜解后台用户名wpscan --url http://www.examp ...
- ORA-04091: table is mutating, trigger/function may not see it
今天在论坛里发现了一个关于ORA-04091的老帖子,收获良多,特此整理一下 关于ORA-04091: table is mutating, trigger/function may not see ...
- C语言与内存模型初探
#include<stdio.h> #include<string.h> int main(){ long long int a = 2<<30; char str ...
- 【SQL】sql server 2008R2 评估期已过,
参考1:http://www.cnblogs.com 参考2:http://www.wang1314.com 个人认为:升级+秘钥,,买正版才是最终的解决方法.
- Android开发环境的演变
之前安装过eclipse,给我的感觉是,好生麻烦.刚开始自己装花了好多时间.隐约还记得有两个小tips: 1)打开时出现 “failed to load the JNI shared library ...
- [转]Eclipse SVN冲突解决
原文地址:http://www.devnote.cn/article/82.html 基本原则是:每次提交前需要先和线上的对比,先把冲突解决掉,然后把线上的更新到本地,最后把本地的提交上去. 右键项目 ...
- rcync 备份命令
不写复杂的命令参数什么意思,网上一搜一大堆. 这是我用的命令: rsync -ax --progress -e "ssh -p 12345" --delete root@143.2 ...
- raw_input和input的区别
raw_input的返回类型是String类型 input的返回类型是int类型 >>> rawinput = raw_input("raw_input:") r ...
- 前端Javascript框架收集
1.AngularJS 2.React 3.vue.js 4.JQuery 5.Zepto.js 6.Require.js 7.sea.js 8.backbone.js 9.Meteor.js 10. ...