ZOJ 2770 Burn the Linked Camp 差分约束+SPFA
第一道正儿八经的差分约束题
有排成一列的n个点,首先告诉你每个点的值最多是多少(最少显然要大于0),然后告诉你m段i,j,k,表示第i个点到第j个点的值的和至少有k,问你总和至少为多少。
要注意的是,告诉你的所有关系式都不要忘记建边,一开始漏了大于0的条件调半天o(╯□╰)o
不等式的形式是a-b<=c这样的= =
1 #include <cstdio> 2 #include <cstring> 3 #include <cmath> 4 #include <algorithm> 5 #include <climits> 6 #include <string> 7 #include <iostream> 8 #include <map> 9 #include <cstdlib> 10 #include <list> 11 #include <set> 12 #include <queue> 13 #include <stack> 14 15 using namespace std; 16 17 typedef long long LL; 18 const int maxn = 1000 + 5; 19 const int maxm = 50000 + 5; 20 const LL INF = LONG_LONG_MAX / 4; 21 int v[maxm],w[maxm],first[maxn],nxt[maxm]; 22 int n,m,C,cnt[maxn],ecnt; 23 LL d[maxn]; 24 bool inq[maxn]; 25 26 void solve() { 27 bool bad = false; 28 queue<int> q; 29 q.push(n); 30 for(int i = 0;i <= n;i++) { 31 inq[i] = false; 32 d[i] = INF; 33 cnt[i] = 0; 34 } 35 d[n] = 0; 36 inq[n] = true; 37 cnt[n] = 1; 38 while(!q.empty() && !bad) { 39 int x = q.front(); q.pop(); 40 inq[x] = false; 41 for(int i = first[x];i != -1;i = nxt[i]) { 42 if(d[v[i]] > d[x] + w[i]) { 43 d[v[i]] = d[x] + w[i]; 44 if(!inq[v[i]]) { 45 q.push(v[i]); 46 cnt[v[i]]++; 47 inq[v[i]] = true; 48 if(cnt[v[i]] > n + 1) { 49 bad = true; break; 50 } 51 } 52 } 53 } 54 } 55 if(bad) puts("Bad Estimations"); 56 else printf("%lld\n",-d[0]); 57 } 58 59 void adde(int _u,int _v,int _w) { 60 v[ecnt] = _v; w[ecnt] = _w; 61 nxt[ecnt] = first[_u]; 62 first[_u] = ecnt; 63 ecnt++; 64 } 65 66 int main() { 67 while(~scanf("%d%d",&n,&m)) { 68 ecnt = 0; 69 memset(first,-1,sizeof(first)); 70 memset(nxt,-1,sizeof(nxt)); 71 for(int i = 1;i <= n;i++) { 72 scanf("%d",&C); 73 adde(i - 1,i,C); 74 adde(i,i - 1,0); 75 } 76 for(int i = 1;i <= m;i++) { 77 int a,b,c; scanf("%d%d%d",&a,&b,&c); 78 adde(b,a - 1,-c); 79 } 80 solve(); 81 } 82 return 0; 83 }
转载于:https://www.cnblogs.com/rolight/p/3858317.html
ZOJ 2770 Burn the Linked Camp 差分约束+SPFA相关推荐
- zoj 2770 Burn the Linked Camp(火烧连营) 差分约束
今天学了一个东西叫差分约束,简单来说就是用最短路知识的三角不等式来解多元不等式组.假设 Xv - Xu <= e 可利用最短路的三角不等式将这个不等式转化为图中的一条边,这条单向边是以u为起点, ...
- zoj 2770 Burn the Linked Camp(火烧连营)
题意:陆逊已知刘备的每个大营最多能容纳Ci个士兵,并且可以估计到第i个大营到第j个大营至少有多少士兵,求刘备最少有多少个士兵. 分析:根据给出的数据我们可以得到一系列不等式组,考虑采用差分约束系统求解 ...
- ZOJ-2770 Burn the Linked Camp 差分约束
题意:告诉我们一系列的不等式,当然这些不等式都是两个变量之间的差值,而非和值.刘备拥有N个军营,每个军营都有一个人数的上限,现在陆逊的探子来报刘备的[a, b]军营总人数不低过某一个值,现在问根据这些 ...
- HDU3440(差分约束+SPFA算法)
题意:两栋房子之间的最大距离为D,也就是A-B<=D,现在求出最矮和最高房子之间的最大距离 思路:差分约束+SPFA算法: 当问题可以转化为形如一组 xi‑x'i<=yi 或一组 xi‑x ...
- poj1201(差分约束+SPFA)
看到这道题,其实就是和poj1716是差不多的 题意:给出n个闭整数区间[ai,bi]和n个整数C1,.,cn.计算具有区间[ai,bi]的至少ci公共元素的整数集Z的最小大小,对于每一个i=1,2, ...
- poj3169(差分约束+SPFA)
题意:FJ有N头牛,这些牛都站在一条直线上等待,但是现在给出了一些条件: 1.首先列出哪些牛之间彼此喜欢,以及之间的最大距离,也就是A-B<=X 2.随后列出哪些牛之间彼此不喜欢,以及之间的最小 ...
- poj1716(差分约束+SPFA)
题意:整数间隔[a,b],a<b,是以a开头和以b结尾的所有连续整数的集合.在包含至少两个不同整数的集合中找到每个间隔的最小元素数. 思路:采用差分约束算法:当问题可以转化为形如一组 xi‑x' ...
- HDU 1384 Intervals【差分约束-SPFA】
类型:给出一些形如a−b<=k的不等式(或a−b>=k或a−b<k或a−b>k等),问是否有解[是否有负环]或求差的极值[最短/长路径]. 例子:b−a<=k1,c−b& ...
- P1993-小K的农场【差分约束,SPFA】
正题 题目链接:https://www.luogu.org/problemnew/show/P1993 题目大意 有若干个条件 Wa+w>WbW_a+w>W_bWa+w>Wb W ...
最新文章
- 超级细分插件_草图大师必装插件
- lol简介/html
- GAUSSIAN MIXTURE VAE: LESSONS IN VARIATIONAL INFERENCE, GENERATIVE MODELS, AND DEEP NETS
- java properties配置文件_java properties配置文件操作
- Intent跳转传list集合
- 通过OmniFaces缓存组件以编程方式缓存PrimeFaces图表
- 飞畅 8口RS-485集线器产品性能参数介绍
- hdu 3074 线段树 OR 树状数组
- JSTL之数字、日期格式化fmt:formatNumber/、fmt:formatDate/
- C#LeetCode刷题-递归
- 一份超详细的MySQL高性能优化实战总结
- 矩阵分析与应用课后答案——张贤达版本
- 使用JAVASCRIPT进行全屏显示页面,就像触摸屏显示效果
- 易会满重磅发声!新证券法将给资本市场带来哪些新变化?证监会职责定位有何新要求?...
- win10 C语言qt调试,如何在Windows中调试Qt(MSVC)应用程序
- steam链接社区_如何通过Steam链接上的Xbox One控制器启用振动
- 网页加载过程+性能优化+安全
- Android Studio如何连接手机设备
- 三端稳压管怎么接线及方法说明
- 如何创建 Ubuntu 信息亭(kiosk)
热门文章
- document的window对象
- ajax 三种数据格式
- LCD1602液晶显示模块的单片机驱动深入详解之硬件篇
- MVC与Validate验证提示的样式修改
- PHP array_merge() 函数
- arch Failed to load module intel
- SQL Server:OA权限管理设计的实现 下
- 【419天】跃迁之路——程序员高效学习方法论探索系列(实验阶段176-2018.03.31)...
- 组件和模块间Activity路由框架
- linux忘记root密码怎么办