http://poj.org/problem?id=1364

题意:输入i,n,gt(lt),k; 判断是否存在这样一个序列,从第 i 项加到第 n+i 项的和 <(lt) k 或 >(gt) k.

思路: 由题意知

gt: Sn+i - Si > k;.......(1)

lt: Si - Sn+i < k;........(2)

由(1)(2)得 :

gt: Si - Sn+i <= -k-1;

lt: Si - Sn+i <= k-1;

根据<n+i,i,-k-1> <n+i,i,k-1>建图。

 #include <stdio.h>
#include <string.h>
const int N=;
const int INF=<<;
struct node
{
int u,v,w;
} edge[N];
int cnt,n,m;
int dis[N];
void add(int u,int v,int w)
{
edge[cnt].u = u;
edge[cnt].v = v;
edge[cnt++].w = w; }
int bellman_ford( )
{
for (int i = ; i <= n; i++)
dis[i] = ;//将源点到各点的距离初始化为零,
//因为根据不等式知源点到各点的最短距离肯定小于零
for (int i = ; i < n; i ++)
{
for (int j = ; j < cnt; j ++)
{
int u = edge[j].u;
int v = edge[j].v;
if (dis[v] > dis[u]+edge[j].w)//更新各点到源点的距离
dis[v] = dis[u]+edge[j].w;
}
}
for (int j = ; j < cnt; j ++)//判断负环
{
int u = edge[j].u;
int v = edge[j].v;
if (dis[v] > dis[u]+edge[j].w)
return false;
}
return true;
}
int main()
{
char s[];
int u,v,w;
while(~scanf("%d",&n)&&n)
{
cnt = ;
scanf("%d",&m);
for (int i = ; i < m; i++)
{
scanf("%d %d %s %d",&u,&v,s,&w);
if (s[]=='g')
add(u+v,u-,-w-);
else
add(u-,u+v,w-);
}
if (!bellman_ford())
printf("successful conspiracy\n");
else
printf("lamentable kingdom\n");
}
return ;
}

King(差分约束)的更多相关文章

  1. POJ 1364 King --差分约束第一题

    题意:求给定的一组不等式是否有解,不等式要么是:SUM(Xi) (a<=i<=b) > k (1) 要么是 SUM(Xi) (a<=i<=b) < k (2) 分析 ...

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

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

  3. King 差分约束 判负环

    给出n个不等式 给出四个参数第一个数i可以代表序列的第几项,然后给出n,这样前面两个数就可以描述为ai+a(i+1)+...a(i+n),即从i到n的连续和,再给出一个符号和一个ki当符号为gt代表‘ ...

  4. UVALive 5532 King(差分约束,spfa)

    题意:假设一个序列S有n个元素,现在有一堆约束,限制在某些连续子序列之和上,分别有符号>和<.问序列S是否存在?(看题意都看了半小时了!) 注意所给的形式是(a,b,c,d),表示:区间之 ...

  5. poj 1364 King(差分约束)

    题目:http://poj.org/problem?id=1364 #include <iostream> #include <cstdio> #include <cst ...

  6. 【转】最短路&差分约束题集

    转自:http://blog.csdn.net/shahdza/article/details/7779273 最短路 [HDU] 1548 A strange lift基础最短路(或bfs)★254 ...

  7. 转载 - 最短路&差分约束题集

    出处:http://blog.csdn.net/shahdza/article/details/7779273 最短路 [HDU] 1548    A strange lift基础最短路(或bfs)★ ...

  8. POJ 1364 King (差分约束)

    King Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 8660   Accepted: 3263 Description ...

  9. hdu 1531 king(差分约束)

    King Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

随机推荐

  1. Nginx+nagios安装配置

    Nginx+nagios安装配置 [root@Nagios ~]# vi /etc/nginx/nginx.conf server { listen ; server_name localhost; ...

  2. (转) Arcgis4js实现链家找房的效果

    http://blog.csdn.net/gisshixisheng/article/details/71009901 概述 买房的各位亲们不知是否留意过链家的"地图找房",这样的 ...

  3. 黑苹果开启retina,大分辨率的方法

    首先,管理分辨率RDM的软件这里下载: http://pan.baidu.com/s/1bpjL07P 在终端输入: curl -o ~/enable-HiDPI.sh https://raw.git ...

  4. idea中配置xml不自动提示解决方案

    1.打开设置File-->Settings(或者Ctrl + Alt + S)--->Languages&Frameworks-->Schemas and DTDS 2.选择 ...

  5. kernel-内核抢占

    kernel-内核抢占 这里有两个概念,内核抢占与用户态抢占.什么是内核抢占?就是指程序执行系统调用的时候(也就是执行于内核态的时候)被其他内核线程抢占走了. 有2种情况是不会也不应该被抢占的: 内核 ...

  6. How To:配置Linux iSCSI客户端

    1.安装客户端 [root@node01 Packages]# rpm -Uvh iscsi-initiator-utils-6.2.0.873-2.el6.x86_64.rpm warning: i ...

  7. Vi/Vim基本用法

    Vi/Vim是Linux中一款功能强大的编辑器,vi是Visual Interface的缩写,即可视化接口,vim是vi iMprove的缩写,即 vi的增强版(具有语法着色功能).它在Linux上的 ...

  8. ORM 进阶操作

    ORM多表操作 一.创建模型 作者模型:一个作者有姓名和年龄. 作者详细模型:把作者的详情放到详情表,包含生日,手机号,家庭住址等信息:作者详情模型和作者模型之间是一对一的关系. 出版商模型:出版商有 ...

  9. JSONP代码收藏

    摘抄自jQuery,用于JSONP请求. var callback = 'callback_' + (new Date() - 0), url = 'http://localhost/', scrip ...

  10. 【codeforces 509B】Painting Pebbles

    [题目链接]:http://codeforces.com/contest/509/problem/B [题意] 给n鹅卵石染色; 有k种颜色可供选择; 问你有没有染色方案; 使得各个堆的鹅卵石里面,第 ...