POJ 1364:King(差分约束)
题目大意:判断是否存在一个长度为n的序列满足给出的不等关系。
分析:
将序列和转化成用两个前缀和之差来表示即可变为差分约束系统。
需要注意的是不能忘记n要加+1,因为还有一个特殊源点,自己因为n:=n+1的位置放在数组预处理的后面所以出错了。
代码:
program king; typepoint=^node;node=recordx,len:longint; next:point;end; vara:array[0..201]of point;q:array[0..50000]of longint;dis,vis:array[0..201]of longint;g:array[0..201]of boolean;n,i,m,x,y,v,t,l:longint; c1,c2:char; s1:string; p:point; procedure put(x,y,v:longint); var p:point; beginnew(p);p^.x:=x; p^.len:=v; p^.next:=a[y];a[y]:=p; end; procedure getnew; var i:longint; beginfillchar(q,sizeof(q),0);fillchar(g,sizeof(g),false); fillchar(vis,sizeof(vis),0);for i:=0 to n do dis[i]:=maxlongint div 3;for i:=0 to n do begin dispose(a[i]); new(a[i]); a[i]:=nil; end;dis[n]:=0; g[n]:=true; q[1]:=n; end; function spfa:boolean; var x,y,h,t:longint; p:point; beginh:=0; t:=1;while h<t dobegininc(h); x:=q[h]; g[x]:=false; new(p);p:=a[x];while p<>nil dobeginy:=p^.x;if dis[x]+p^.len<dis[y] thenbegindis[y]:=dis[x]+p^.len;if g[y]=false thenbegininc(t); q[t]:=y; g[y]:=true;end;inc(vis[y]); if vis[y]>n then exit(false);end;p:=p^.next;end;end;exit(true); end; beginread(n);while n>0 dobegininc(n); getnew;read(m); readln;for i:=0 to n-1 do put(i,n,0);for i:=1 to m dobeginreadln(s1);t:=pos('t',s1); l:=pos(' ',s1);val(copy(s1,1,l-1),x); val(copy(s1,l+1,t-3-l),y);val(copy(s1,t+2,length(s1)-t-1),v);if s1[t-1]='l' then put(x+y,x-1,v-1);if s1[t-1]='g' then put(x-1,x+y,-v-1);end;if spfa then writeln('lamentable kingdom') else writeln('successful conspiracy');read(n);end; end.
View Code
转载于:https://www.cnblogs.com/qtyytq/p/5638999.html
POJ 1364:King(差分约束)相关推荐
- [poj 1364]King[差分约束详解(续篇)][超级源点][SPFA][Bellman-Ford]
题意 有n个数的序列, 下标为[1.. N ], 限制条件为: 下标从 si 到 si+ni 的项求和 < 或 > ki. 一共有m个限制条件. 问是否存在满足条件的序列. 思路 转化为差 ...
- POJ 1364 King 差分约束系统
Description Once, in one kingdom, there was a queen and that queen was expecting a baby. The queen p ...
- King(差分约束)
题目链接:King 题意:给你几个限制条件,问你是否能构建出来一个序列(a1,a2,a3--an)满足这些条件. 样例: 输入 4 2 1 2 gt 0 2 2 lt 2 1 2 1 0 gt 0 1 ...
- POJ 3159 Candies 差分约束dij
分析:设每个人的糖果数量是a[i] 最终就是求a[n]-a[1]的最大值 然后给出m个关系 u,v,c 表示a[u]+c>=a[v] 就是a[v]-a[u]<=c 所以对于这种情况,按照u ...
- poj 1201 Intervals 差分约束
真 .读题杀,英文题一脸懵逼,看来以后还要多读读英文题,不过读完了就能发现这其实是一道很裸的差分约束,按照题意建边即可,但还要注意的就是后一个要大于等于前一个,并且每个位置不能超过一个元素.求一边最大 ...
- POJ 1364 King (差分约束系统)
题目描述有点复杂,前面讲了一大堆废话. 题目大意:对一个含n个整数的序列进行一些约束: 1.整数序列中连续的一段的和大于某个整数: 2.整数序列中连续的一段的和小于某个整数. 问满足以上约束的整数序列 ...
- O - Layout POJ - 3169(差分约束)
O - Layout POJ - 3169 参考 思路: 限制条件 : 最大距离不超过w d[v] - d[u] <= w; 最小距离超过w d[v] - d[u] >= w; 移项得 d ...
- POJ-1364 King 差分约束
题意:和上一题比较像,不过这里不是根据已知的约束求出另外一个约束,而是判定是否存在解.给定一个区间的和值区间,问整个区间能否满足所有的要求. 解法:虚拟一个超级源点,超级源点到点i的最短路表示到第i个 ...
- POJ - 1201 Intervals(差分约束+最短路)
题目链接:点击查看 题目大意:给定n个闭区间[ai,bi]和n个整数ci,你需要构造一个整数集合Z,使得Z中满足所有的ai<=x<=bi的整数不少于ci个,求出这样的整数集合Z最少包含多少 ...
- POJ 1932 XYZZY (差分约束+传递闭包)
题目链接 题意 有NNN个屋子,走进每个屋子血量都会发生改变,开始生命值100100100.问是否可以从111号屋子走到NNN号屋子中间血量保持大于000 思路 按照给定的顺序建图,因为要让血量尽可能 ...
最新文章
- 随笔-20150513
- CNCC 2019 | 计算领域年度盛会—中国计算机大会10月将在苏州举行
- robotframework手机号随机产生脚本
- 推荐系统中的Bias/Debias大全
- Handler延迟事件使用
- Redis设计于实现之字典
- pacificA架构介绍
- 【C基础】指针/指针运算/二级指针/函数指针
- github mac 添加 ssh_计算机专业MAC操作技巧(二)
- 水仙花数 java 1 100_Java练习题1:找出100——999数中的所有水仙花数
- hdfs合并小文件测试
- 2021-09-13冷启动问题主要分为 3 类,用户冷启动,即如何给新用户做个性化推荐物品冷启动,即如何将新的物品推荐给可能对它感兴趣的用户系统冷启动,即如何在一个新开发的网站
- malloc.h头文件和malloc函数详解
- Linux网络操作系统及应用教程(项目式)项目三
- 利用fitz将pdf文件的每一页输出为高精度的PNG图片
- Channel Attention 通道注意力
- html表格填充随页面大小自动缩放,一个简单的html表格自适应解决方案
- Docker redis cluster集群的搭建
- 板载SoC与插槽CPU
- JavaScript-筑基(二十五)navigator对象(判断页面打开终端)、history对象