3436: 小K的农场

Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 938  Solved: 417
[Submit][Status][Discuss]

Description

背景
小K是个特么喜欢玩MC的孩纸。。。
描述
小K在MC里面建立很多很多的农场,总共n个,以至于他自己都忘记了每个农场中种植作物的具体数量了,他只记得
一些含糊的信息(共m个),以下列三种形式描述:农场a比农场b至少多种植了c个单位的作物,农场a比农场b至多
多种植了c个单位的作物,农场a与农场b种植的作物数一样多。但是,由于小K的记忆有些偏差,所以他想要知道存
不存在一种情况,使得农场的种植作物数量与他记忆中的所有信息吻合。

Input

第一行包括两个整数n和m,分别表示农场数目和小K记忆中的信息的数目接下来m行:如果每行的第一个数是1,接
下来有三个整数a,b,c,表示农场a比农场b至少多种植了c个单位的作物如果每行第一个数是2,接下来有三个整数a
,b,c,表示农场a比农场b至多多种植了c个单位的作物如果每行第一个数是3,接下来有两个整数a,b,表示农场a
种植的数量与b一样。1<=n,m,a,b,c<=10000

Output

如果存在某种情况与小K的记忆吻合,输出”Yes”,否则输出”No”

Sample Input

3 3
3 1 2
1 1 3 1
2 2 3 2

Sample Output

Yes
样例解释
三个农场种植的数量可以为(2,2,1)

HINT

Source

Kpmcup#0 By Greens


入门题!

设点x,y相差c

若x==y,x与y之间连两条权值为0的的边

x-y<=c,y向x连一条权值为c的边

x-y>=c变形为y-x<=c,x向y连一条权值为-c的边

构出一张有向图,利用SPFA在图中找负权环,若有负权环则说明答案不合法(SPFA找负权环应当使用DFS版的)


 1 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 #include<cstdlib>
 5 #include<algorithm>
 6 #include<vector>
 7 #include<cmath>
 8 #include<ctime>
 9 #include<cstring>
10 #define yyj(s) freopen(s".in","r",stdin),freopen(s".out","w",stdout);
11 #define llg long long
12 #define maxn 50000
13 #define md 20000
14 #define inf (llg)1e16
15 using namespace std;
16 llg i,j,k,n,m,dl[maxn*10],head,tail,dis[maxn],bj[maxn],js[maxn],heh,top,stack[maxn];
17 bool f;
18
19 vector <llg> a[maxn],val[maxn];
20
21 void link(llg x,llg y,llg v)
22 {
23     a[x].push_back(y),val[x].push_back(v);
24 }
25
26 void init()
27 {
28     llg x,y,t,v;
29     cin>>n>>m;
30     for (i=1;i<=m;i++)
31     {
32         scanf("%lld%lld%lld",&t,&x,&y);
33         if (t==3)
34         {
35             link(x,y,0); link(y,x,0);
36         }
37         if (t==2)
38         {
39             scanf("%lld",&v);
40             link(y,x,v);
41         }
42         if (t==1)
43         {
44             scanf("%lld",&v);
45             link(x,y,-v);
46         }
47     }
48     f=true;
49 }
50
51 bool SPFA()
52 {
53     for(llg i=1;i<=n;i++) dis[i]=0,stack[++top]=i,bj[i]=1;
54     llg u,w;
55     while(top>0)
56     {
57         u=stack[top]; top--; bj[u]=0;
58         w=a[u].size();
59         for(llg i=0;i<w;i++)
60         {
61             llg v=a[u][i];
62             if(dis[v]>dis[u]+val[u][i])
63             {
64                 dis[v]=dis[u]+val[u][i];
65                 if(!bj[v]) { bj[v]=1; stack[++top]=v; js[v]++; if(js[v]>=n) return false;}
66             }
67         }
68     }
69     return true;
70 }
71
72 int main()
73 {
74     yyj("a");
75     init();
76     if (SPFA()) cout<<"Yes"; else cout<<"No";
77     return 0;
78 }

转载于:https://www.cnblogs.com/Dragon-Light/p/5917075.html

【BZOJ】3436: 小K的农场相关推荐

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

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

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

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

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

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

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

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

  5. bzoj 3437 小p的农场

    bzoj 3437 小p的农场 思路 \(f[i]=min(f[j]+\sum\limits_{k=j+1}^{i}{b[k]*(i-k)}+a[i])\) \(f[i]=min(f[j]+\sum\ ...

  6. P1993 小 K 的农场

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

  7. bzoj3436小K的农场

    bzoj3436小K的农场 题意: n个数,知道m条关系:a-b≥c.a-b≤c或a==b.问是否存在满足所有关系的情况.n≤10000,m≤10000. 题解: 差分约束.因为只要求是否满足,因此最 ...

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

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

  9. 小K的农场(luogu P1993

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

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

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

最新文章

  1. 微软宣布在机器翻译方面取得突破,中翻英可达人类水平
  2. Linux命令之 —— grep \ls \ ll \ sed \ bg fg \ ipset \ wc \ ifconfig \ awk
  3. C# Graphic 绘制圆、三角形、椭圆、图片
  4. The Internals of PostgreSQL
  5. SpringBoot中将thymeleaf升级到3.0或以上版本
  6. linux安卓双系统板子,安卓迷你 PC 主机只要 109 美元,支持 Android 和 Linux 双系统...
  7. mPaas上线应用检测
  8. Spring Boot自定义错误页面
  9. Android 功耗优化(4)---android 7.0低电耗Doze模式
  10. iptables基础(01)
  11. 趋势防毒officescan问题心得
  12. 老农的计算机学习笔记(二)硬件篇
  13. 9.12测试(二)——国际象棋
  14. mysql的user表被清空_用delete命令来个不小心删除了user表
  15. java filter 重定向_在Filter的doFilter中进行重定向 出现异常
  16. docker实践(2)常用命令和DockerFile详解
  17. 【局域网音频实时传输、屏幕单播及广播】
  18. 连接到服务器 ------------------------------ 无法连接到 + SQL Server 请求失败或服务未及时响应....解决思路
  19. Substrate 基础 -- 教程(Tutorials)
  20. 精准化测试之:jacoco实现增量代码覆盖率统计

热门文章

  1. 【设计模式专题】Singleton
  2. 配置F5 负载均衡(转)
  3. 查找字符在字符串出现的次数
  4. http code 000
  5. 如何快速生成100万不重复的8位随机编号?
  6. dubbo实现两个系统之间的通信
  7. Hibernate入门案例
  8. [C#] 控制系统音量-第一章
  9. 【C++/Python 双语言实现】Luogu5092 Cube Stacking
  10. Luogu4711「物理」平抛运动