bzoj3436小K的农场

题意:

n个数,知道m条关系:a-b≥c、a-b≤c或a==b。问是否存在满足所有关系的情况。n≤10000,m≤10000。

题解:

差分约束。因为只要求是否满足,因此最短路最长路都可以。不过要注意如果是用spfa的bfs写法,每个点都必须作为源点判一次负环,因为图可能不连通。正因为如此,虽说加了SLF的bfs写法spfa能卡过,但比dfs写法慢不只10倍。

代码:

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <algorithm>
 4 #include <queue>
 5 #define ll long long
 6 #define inc(i,j,k) for(int i=j;i<=k;i++)
 7 #define maxn 10010
 8 #define INF 0x3fffffff
 9 using namespace std;
10
11 inline int read(){
12     char ch=getchar(); int f=1,x=0;
13     while(ch<'0'||ch>'9'){if(ch=='-')f=-1; ch=getchar();}
14     while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();
15     return f*x;
16 }
17
18 struct e{int t,w,n;}; e es[maxn*40]; int g[maxn],ess;
19 void pe(int f,int t,int w){es[++ess]=(e){t,w,g[f]}; g[f]=ess;}
20 int n,m,cnt[maxn],d[maxn]; bool inq[maxn]; deque<int>q;
21 ll spfa(int s){
22     q.clear(); memset(inq,0,sizeof(inq)); memset(cnt,0,sizeof(cnt));
23     q.push_back(s); inq[s]=1; d[s]=0; cnt[s]=1;
24     while(!q.empty()){
25         int x=q.front(); q.pop_front(); inq[x]=0;
26         for(int i=g[x];i;i=es[i].n)if(d[es[i].t]>d[x]+es[i].w){
27             d[es[i].t]=d[x]+es[i].w;
28             if(!inq[es[i].t]){
29                 if(!q.empty()&&d[es[i].t]<d[q.front()])q.push_front(es[i].t);else q.push_back(es[i].t);
30                 inq[es[i].t]=1; cnt[es[i].t]++; if(cnt[es[i].t]>=n)return 0;
31             }
32         }
33     }
34     return 1;
35 }
36 int main(){
37     n=read(); m=read();
38     inc(i,1,m){
39         int opt=read(),a,b,c;
40         if(opt==1)a=read(),b=read(),c=read(),pe(a,b,-c);
41         if(opt==2)a=read(),b=read(),c=read(),pe(b,a,c);
42         if(opt==3)a=read(),b=read(),pe(b,a,0),pe(a,b,0);
43     }
44     inc(i,1,n)if(!spfa(i)){puts("No"); return 0;} puts("Yes"); return 0;
45 }

20161018

转载于:https://www.cnblogs.com/YuanZiming/p/5982007.html

bzoj3436小K的农场相关推荐

  1. P1993 小 K 的农场

    P1993 小 K 的农场 题解: 农场 a 比农场 b 至少多种植了 c 个单位的作物: 这句话说明:a - b > = c 转化可得 b - a < = - c add(a,b,-c) ...

  2. BZOJ 3436: 小K的农场( 差分约束 )

    orz云神... 真的给跪了...BFS版spfa T 掉了...然后DFS版的就A了...我现在很迷茫.... 这就是个普通的差分约束... ---------------------------- ...

  3. [BZOJ]3436: 小K的农场

    题解:  差分约束 模板题 差分约束系统  联系 最短路 对于操作1:$ a-b\geqslant c\rightarrow b\leqslant a-c $ 也就是说a向b连一条-c的边 对于操作2 ...

  4. bzoj 3436: 小K的农场(差分约束)

    3436: 小K的农场 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 1824  Solved: 810 [Submit][Status][Disc ...

  5. 小K的农场(luogu P1993

    题目传送门 题目描述 小K在MC里面建立很多很多的农场,总共n个,以至于他自己都忘记了每个农场中种植作物的具体数量了,他只记得一些含糊的信息(共m个),以下列三种形式描述: 农场a比农场b至少多种植了 ...

  6. BZOJ 3436 小K的农场 差分约束

    Description 背景 小K是个特么喜欢玩MC的孩纸... 描述 小K在MC里面建立很多很多的农场,总共n个,以至于他自己都忘记了每个农场中种植作物的具体数量了,他只记得 一些含糊的信息(共m个 ...

  7. P1993 小K的农场 (差分约束)

    题目描述 小K在MC里面建立很多很多的农场,总共n个,以至于他自己都忘记了每个农场中种植作物的具体数量了,他只记得一些含糊的信息(共m个),以下列三种形式描述: 农场a比农场b至少多种植了c个单位的作 ...

  8. 【BZOJ - 3436】小K的农场(差分约束)

    题干: 背景 小K是个特么喜欢玩MC的孩纸... 描述 小K在MC里面建立很多很多的农场,总共n个,以至于他自己都忘记了每个农场中种植作物的具体数量了,他只记得 一些含糊的信息(共m个),以下列三种形 ...

  9. 【差分约束】POJ3159/LG P1993 小K的农场

    终于把差分约束刷完了!!,这些题的套路都是很类似的 题目描述小K在MC里面建立很多很多的农场,总共n个,以至于他自己都忘记了每个农场中种植作物的具体数量了,他只记得一些含糊的信息(共m个),以下列三种 ...

最新文章

  1. POJ-2955 Brackets
  2. 如何在大一时候系统学习编程?
  3. oracle数组元素所在key,oracle可变数组(VARRAY)
  4. Index of Unix
  5. c++ cdi+示例_C ++'not'关键字和示例
  6. [剑指offer]面试题第[37]题[Leedcode][JAVA][第297题][二叉树列的序列化与反序列化][递归][BFS]
  7. svm分类器训练详细步骤_「五分钟机器学习」向量支持机SVM——学霸中的战斗机...
  8. IDEA上Debug调试全流程
  9. Ring3加载驱动源码
  10. FS4054单节锂电池充电管理芯片,IC电路图
  11. CCL 2020闭幕,数万人见证2020年中国NLP全貌剪影
  12. OJ每日一练——乘方计算
  13. 简单记录一下春招旅程 腾讯字节
  14. ads的项目下的文件全部消失不见了
  15. 2021全球与中国自动导引车市场现状及未来发展趋势
  16. JavaSE基础——J2SE概述
  17. 如何从screen Attached 恢复
  18. go语言之“分金币问题”
  19. 辞职一年不上班,生活会变得怎么样?
  20. TA143加速度传感器的测量频率范围

热门文章

  1. DetectoRS-最强目标检测网络 54.7AP | Detecting Objects with Recursive Feature Pyramid and Switchable Atrous
  2. Mysql执行脚本Specified key was too long; max key length is 767 bytes问题解决
  3. 5G技术为人工智能产业带来了什么?
  4. 四国军棋界面Swing/AWT的代码
  5. 关于下载cuda和cudnn官方网站访问不了的替代方案
  6. # 联邦学习-安全树模型 SecureBoost之集成学习
  7. macbook air php 内存,紧急抢救性拆解喝了150毫升咖啡的苹果MacBook Air超薄笔记本!...
  8. win10 强制关机无法启动修复
  9. 【003】基于51单片机的宠物自动定时、喂食系统的proteus仿真设计
  10. python学生信息录入_使用python实现一个简单的学生信息管理系统