题目大意:判断是否存在一个长度为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(差分约束)相关推荐

  1. [poj 1364]King[差分约束详解(续篇)][超级源点][SPFA][Bellman-Ford]

    题意 有n个数的序列, 下标为[1.. N ], 限制条件为: 下标从 si 到 si+ni 的项求和 < 或 > ki. 一共有m个限制条件. 问是否存在满足条件的序列. 思路 转化为差 ...

  2. POJ 1364 King 差分约束系统

    Description Once, in one kingdom, there was a queen and that queen was expecting a baby. The queen p ...

  3. King(差分约束)

    题目链接:King 题意:给你几个限制条件,问你是否能构建出来一个序列(a1,a2,a3--an)满足这些条件. 样例: 输入 4 2 1 2 gt 0 2 2 lt 2 1 2 1 0 gt 0 1 ...

  4. 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 ...

  5. poj 1201 Intervals 差分约束

    真 .读题杀,英文题一脸懵逼,看来以后还要多读读英文题,不过读完了就能发现这其实是一道很裸的差分约束,按照题意建边即可,但还要注意的就是后一个要大于等于前一个,并且每个位置不能超过一个元素.求一边最大 ...

  6. POJ 1364 King (差分约束系统)

    题目描述有点复杂,前面讲了一大堆废话. 题目大意:对一个含n个整数的序列进行一些约束: 1.整数序列中连续的一段的和大于某个整数: 2.整数序列中连续的一段的和小于某个整数. 问满足以上约束的整数序列 ...

  7. O - Layout POJ - 3169(差分约束)

    O - Layout POJ - 3169 参考 思路: 限制条件 : 最大距离不超过w d[v] - d[u] <= w; 最小距离超过w d[v] - d[u] >= w; 移项得 d ...

  8. POJ-1364 King 差分约束

    题意:和上一题比较像,不过这里不是根据已知的约束求出另外一个约束,而是判定是否存在解.给定一个区间的和值区间,问整个区间能否满足所有的要求. 解法:虚拟一个超级源点,超级源点到点i的最短路表示到第i个 ...

  9. POJ - 1201 Intervals(差分约束+最短路)

    题目链接:点击查看 题目大意:给定n个闭区间[ai,bi]和n个整数ci,你需要构造一个整数集合Z,使得Z中满足所有的ai<=x<=bi的整数不少于ci个,求出这样的整数集合Z最少包含多少 ...

  10. POJ 1932 XYZZY (差分约束+传递闭包)

    题目链接 题意 有NNN个屋子,走进每个屋子血量都会发生改变,开始生命值100100100.问是否可以从111号屋子走到NNN号屋子中间血量保持大于000 思路 按照给定的顺序建图,因为要让血量尽可能 ...

最新文章

  1. 随笔-20150513
  2. CNCC 2019 | 计算领域年度盛会—中国计算机大会10月将在苏州举行
  3. robotframework手机号随机产生脚本
  4. 推荐系统中的Bias/Debias大全
  5. Handler延迟事件使用
  6. Redis设计于实现之字典
  7. pacificA架构介绍
  8. 【C基础】指针/指针运算/二级指针/函数指针
  9. github mac 添加 ssh_计算机专业MAC操作技巧(二)
  10. 水仙花数 java 1 100_Java练习题1:找出100——999数中的所有水仙花数
  11. hdfs合并小文件测试
  12. 2021-09-13冷启动问题主要分为 3 类,用户冷启动,即如何给新用户做个性化推荐物品冷启动,即如何将新的物品推荐给可能对它感兴趣的用户系统冷启动,即如何在一个新开发的网站
  13. malloc.h头文件和malloc函数详解
  14. Linux网络操作系统及应用教程(项目式)项目三
  15. 利用fitz将pdf文件的每一页输出为高精度的PNG图片
  16. Channel Attention 通道注意力
  17. html表格填充随页面大小自动缩放,一个简单的html表格自适应解决方案
  18. Docker redis cluster集群的搭建
  19. 板载SoC与插槽CPU
  20. JavaScript-筑基(二十五)navigator对象(判断页面打开终端)、history对象

热门文章

  1. LeetCode 2 两数相加
  2. Android性能优化之电量篇(四)
  3. gbdt 回归 特征重要性 排序_GBDT 理解
  4. bzoj1503 郁闷的出纳员(平衡树,思维)
  5. Solidity字符串类型
  6. django rest framework mixins小结
  7. 网站性能优化之yahoo军规
  8. 使用xshell5 从CentOS主机download资料
  9. wex5 教程 之 图文讲解 智能数据库设计 之(1) 触发器
  10. 前端分页页码静态部分制作