orz云神...

真的给跪了...BFS版spfa T 掉了...然后DFS版的就A了...我现在很迷茫....

这就是个普通的差分约束...

------------------------------------------------------------------------------

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stack>
#include<iostream>
#define rep(i, n) for(int i = 0; i < n; ++i)
#define clr(x, c) memset(x, c, sizeof(x))
using namespace std;
const int maxn = 10010;
struct edge {
int to, w;
edge*next;
} E[maxn << 1], *pt = E, *head[maxn];
inline void add_edge(int u, int v, int d) {
pt->to = v, pt->w = d;
pt->next = head[u];
head[u] = pt++;
}
int d[maxn], inS[maxn], cnt[maxn], n;
stack<int> S;
bool spfa() {
rep(i, n)
S.push(i), inS[i] = true, cnt[i] = 1, d[i] = 0;
while(!S.empty()) {
int x = S.top(); S.pop();
inS[x] = false;
for(edge*e = head[x]; e; e = e->next) if(d[e->to] > d[x] + e->w) {
   d[e->to] = d[x] + e->w;
   if(!inS[e->to]) {
if(++cnt[e->to] > n) return false;
       S.push(e->to), inS[e->to] = true;
   }
}
}
return true;
}
inline int read() {
char c = getchar();
for(; !isdigit(c); c = getchar());
int ans = 0;
for(; isdigit(c); c = getchar())
   ans = ans * 10 + c - '0';
return ans;
}
void init() {
clr(head, 0);
n = read();
int m = read();
while(m--) {
int t = read(), u = read() - 1, v = read() - 1;
if(t == 3) 
   add_edge(u, v, 0), add_edge(v, u, 0);
else {
int w = read();
t == 1 ? add_edge(u, v, -w) : add_edge(v, u, w);
}
}
}
int main(){
freopen("test.in", "r", stdin);
init();
printf(spfa() ? "Yes\n" : "No\n");
return 0;

------------------------------------------------------------------------------

3436: 小K的农场

Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 351  Solved: 186
[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一样多输出格式

Output

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

Sample Input

33
312
1131
2232

Sample Output


Yes

样例解释

三个农场种植的数量可以为(2,2,1)。

对于100%的数据,1<=n,m,a,b,c<=10000

HINT

Source

Kpmcup#0 By Greens

转载于:https://www.cnblogs.com/JSZX11556/p/4657366.html

BZOJ 3436: 小K的农场( 差分约束 )相关推荐

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

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

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

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

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

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

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

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

  5. bzoj3436小K的农场

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

  6. 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\ ...

  7. P1993 小 K 的农场

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

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

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

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

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

最新文章

  1. 朴素贝叶斯分类器python_朴素贝叶斯分类器及Python实现
  2. 好用的下拉第三方——nicespinner
  3. 【Flask】ORM关系以及一对多
  4. 第一个冲刺周期第二天补发
  5. 【路径规划】基于matlab改进的蚁群算法机器人栅格地图避障路径规划【含Matlab源码 905期】
  6. QT 播放器之界面布局
  7. 冲量在线荣获STIF2021国际科创节2021年度技术先锋奖
  8. 3GPP TS 24.301 Release 8 中文版
  9. 物理计算机技术研究生就业前景,物理学就业前景
  10. Android开发这么久你竟然还不知道Dropbox?
  11. failed to req API:/nacos/v1/ns/instance after all servers([192.168.43.148:8848]) tried: ErrCode:503,
  12. BZOJ4484: [Jsoi2015]最小表示
  13. 满足功能安全要求的代码测试方案:Parasoft C++test
  14. java企业排班系统企业考勤人脸识别考勤系统源码企业批量排班网站
  15. 使用Tensorflow训练LSTM+Attention中文标题党分类
  16. 计算机桌面右键新建展不开,电脑右键菜单没有新建记事本怎么办?
  17. manjaro怎么启动mysql_Manjaro 入门使用教程
  18. Fedora构建Nginx
  19. TPS27081ADDCR具有电平转换和可调节摆率控制 PFET高侧负载开关TI
  20. 人工智能的未来,人类的未来

热门文章

  1. mysql超大表处理方式是_第29问:MySQL 的复制心跳说它不想跳了
  2. 上网登录窗不弹出_配置 Windows XP 正常上网(TLS HTTPS),连接到 NAS
  3. Win7system登录打开计算机,Windows7系统system文件丢失导致开机黑屏如何解决
  4. 「C语言」指针数组 数组指针 指针函数 函数指针
  5. 根据字符串自动构造对应类
  6. git提交过滤package.json_eclipse配置git环境以及使用git提交本地仓和远程仓
  7. 百度云盘照片导入华为相册里_必须知道的相册管理工具
  8. 如何在虚拟linux环境运行python_Conda(Python)虚拟环境不能从Windows移植到Linux
  9. linux 查看端口 程序,linux开发:Linux下查看端口占用
  10. 为什么要使用工业以太网交换机?