题目描述有点复杂,前面讲了一大堆废话。

题目大意:对一个含n个整数的序列进行一些约束:

1、整数序列中连续的一段的和大于某个整数;

2、整数序列中连续的一段的和小于某个整数。

问满足以上约束的整数序列是否存在。

分析:首先利用前缀和进行转换,然后将>化为>=,将<化为<=,然后就基本是裸的差分约束系统了。

需要注意的是,建立的约束图可能并不是无向连通的,所以需要另外加一个结点作为源点,由于加了一个点,所以判断是否有负环时要注意,条件是某个点进队次数大于n+1

View Code

#include <stdio.h>
#include <string.h>
#include <queue>
using namespace std;
#define N 110
#define M 210
#define INF 0x3fffffff
int n,m;
int d[N];
int inq[N],cnt[N];
int first[N],v[M],next[M],w[M];
int e;
void init()
{e=0;memset(first,-1,sizeof(first));
}
void insert(int a,int b,int c)
{v[e]=b;w[e]=c;next[e]=first[a];first[a]=e++;
}
void spfa()
{queue<int> q;int a,b;bool loop=false;memset(inq,0,sizeof(int)*(n+5));memset(cnt,0,sizeof(int)*(n+5));for(int i=0;i<=n;i++)   d[i]=INF;d[n+1]=0;inq[n+1]=1;q.push(n+1);cnt[n+1]++;while(!q.empty()){a=q.front(),q.pop();if(cnt[a]>n+1)   { loop=true;    break; }inq[a]=0;for(int i=first[a];i!=-1;i=next[i]){b=v[i];if(d[b]>d[a]+w[i]){d[b]=d[a]+w[i];if(inq[b]==0)   inq[b]=1,q.push(b),cnt[b]++;}}}if(loop)    puts("successful conspiracy");else   puts("lamentable kingdom");
}
int main()
{int i;int a,b,c;char s[5];while(scanf("%d",&n),n){init();scanf("%d",&m);for(i=0;i<m;i++){scanf("%d%d%s%d",&a,&b,s,&c);if(s[0]=='g'){insert(a+b,a-1,-c-1);}else{insert(a-1,a+b,c-1);}}for(i=0;i<=n;i++) insert(n+1,i,0);spfa();}return 0;
}

转载于:https://www.cnblogs.com/algorithms/archive/2012/07/24/2606894.html

POJ 1364 King (差分约束系统)相关推荐

  1. POJ 1364 King 差分约束系统

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

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

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

  3. POJ 2983(差分约束系统)

    POJ 2983 (1)题意: 有两种信息, P A B X表示A在B点的北边的准确距离为X V A B表示A在B的北边,但是具体的距离不确定,但是距离一定大于1. 询问是否存在一种情况使N个据点满足 ...

  4. POJ 1364 King

    题目大意: 国王有一个傻儿子,只会判断在给出的序列S={a1,a2,a3,a4...ai...at}中,ai+a(i+1)+a(i+2)+...+a(i+n)<ki或ai+a(i+1)+a(i+ ...

  5. POJ 1364:King(差分约束)

    题目大意:判断是否存在一个长度为n的序列满足给出的不等关系. 分析: 将序列和转化成用两个前缀和之差来表示即可变为差分约束系统. 需要注意的是不能忘记n要加+1,因为还有一个特殊源点,自己因为n:=n ...

  6. POJ 2983 浅谈差分约束系统处理严格等价性问题

    世界真的很大 差分约束系统,基于SPFA算法的复数不等关系判别及求值的系统 但是如果是完全等价的关系呢?或者说是混合式的等价关系? 当然是可以处理的,只不过需要恰恰转化一下,这个等价转不等算是差分约束 ...

  7. POJ 2983 Is the Information Reliable?(差分约束系统)

    题目大意:已知关于在一条直线上的n个点的m条信息,信息分为两类, 1.准确信息:P A B X 表示A在B的北方X光年: 2.模糊信息:V A B 表示A在B的北方1光年以北. 问所给信息是否自相矛盾 ...

  8. 提高篇 第三部分 图论 第4章 差分约束系统

    差分约束系统_我的ACM,我的梦!!!-CSDN博客_差分约束系统 差分约束系统详解 - hr_whisper - 博客园 最短路径算法:Bellman和差分约束系统_算法导论视频课程_其他视频-51 ...

  9. 图论 —— 差分约束系统

    [概述] 如果一个系统由 n 个变量 m 个约束条件组成,形成 m 个形如  的不等式,其中 ,k 是常数,则称这 m 个不等式为差分约束系统(system of difference constra ...

最新文章

  1. SHELL-命令解释程序
  2. 洛谷 - P2764 最小路径覆盖问题(最大流+二分图最小路径覆盖+路径打印)
  3. 使用brew,cask和jenv在MacOSX上设置多个Java JRE / JDK
  4. Android开发中依赖注入的应用
  5. uniCloud免费云存储图床源码
  6. vue点击input框出现弹窗_vue组件实现弹出框点击显示隐藏效果
  7. python restful风格_总结python bottle框架支持jquery ajax的RESTful风格的PUT和DELETE方法
  8. Win11显卡fps很低怎么办?Win11显卡fps很低的解决方法
  9. strace的简单用法
  10. 互信息(Mutual Information)介绍
  11. Laravel:whereIn子查询
  12. 在硬盘上快速安装多个操作系统
  13. 【问题解决】springboot启动后一小会就自动停止,提示Process finished with exit code 0
  14. Cisco 防火墙Firwall Failover ActiveActive 双HSRP 实现双ISP完美切换
  15. java execute、executeQuery和executeUpdate之间的区别
  16. 怎么把游戏隐藏到计算机,怎么将电脑游戏隐藏桌面
  17. Java日志框架-SLF4J入门
  18. 利用google maps API开发应用精选
  19. 图解Word2vec,读这一篇就够了!
  20. WAPI 产 业 联 盟成 员

热门文章

  1. 图的割点、桥与双连通分支
  2. 安卓应用程序插件化开发框架 -AAP Framework
  3. typedef的用法总结
  4. Eclipse配置Tomcat和JDK方法
  5. linux三 gdb/makefeile/io
  6. git安装和使用---本地仓库
  7. Mozilla 准备让“合格” Linux 用户测试 WebRender
  8. JS: 关于元素大小和距离的有关的属性总结
  9. Excel中的的经纬度坐标在地图上显示
  10. react-dnd 拖拽