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

题意 :给出一个序列a1,a2,a3,a4.....ai,......at ;然后给你一个不等式使得ai+a(i+1)+a(i+2)+...+a(i+n)<ki或者是ai+a(i+1)+a(i+2)+...+a(i+n)>ki,样例的意思是:gt是大于的意思,lt是小于的意思,第一个数字 i 是序列从ai 开始,第2个数字n是从ai 开始加加到an,然后最后那个数就是不等式的右边。问你所有不等式是否都满足条件,若满足输出lamentable kingdom,不满足输出successful conspiracy,

1 2 gt 0
a1+a2+a3>0
2 2 lt 2
a2+a3+a4<2

思路 :好吧,一个赤裸裸的差分。。。。转换一下首先设Si=a1+a2+a3+...+ai那么根据样例可以得出S3-S0>0---->S0-S3<=-1和S4-S1<2---->S4-S1<=1,因为差分约束的条件是小于等于,所以我们将ki-1可以得到一个等于号那么通式可以表示为

a  b  gt  c
S[a-1]-s[a+b]<=-ki-1
a  b  lt  c
S[a+b]-S[a-1]<=ki-1那么根据差分约束建图,加入这些有向边

gt:  <a+b,a-1>=-ki-1
lt:  <a-1,a+b>=ki-1
再根据bellman_ford判断是否有无负环即可
若出现负环了则这个序列不满足所有的不等式

#include <iostream>
#include <stdio.h>
#include <string.h> using namespace std ; struct node
{
int u,v,w ;
} edge[] ;
int n,m,dis[] ; int bellman()
{
memset(dis,,sizeof(dis)) ;
for(int i = ; i <= n ; i++)
for(int j = ; j < m ; j++)
if(dis[edge[j].u]+edge[j].w < dis[edge[j].v])
dis[edge[j].v] = dis[edge[j].u]+edge[j].w ;
for(int j = ; j < m ; j++)
{
if(dis[edge[j].u]+edge[j].w < dis[edge[j].v])
return ;
}
return ;
}
int main()
{
while(~scanf("%d",&n) && n)
{
scanf("%d",&m) ;
int a,b,c ;
char sh[] ;
for(int i = ; i < m ; i++)
{
scanf("%d %d %s %d",&a,&b,sh,&c) ;
if(sh[] == 'g')
{
edge[i].u = a+b ;
edge[i].v = a- ;
edge[i].w = -c- ;
}
else {
edge[i].u = a- ;
edge[i].v = a+b ;
edge[i].w = c- ;
}
}
if(!bellman())
printf("successful conspiracy\n") ;
else
printf("lamentable kingdom\n") ;
}
return ;
}

POJ 1364 King的更多相关文章

  1. poj 1364 King(差分约束)

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

  2. POJ 1364 King (UVA 515) 差分约束

    http://poj.org/problem?id=1364 http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemi ...

  3. poj 1364 King(差分约束)

    题意(真坑):傻国王只会求和,以及比较大小.阴谋家们想推翻他,于是想坑他,上交了一串长度为n的序列a[1],a[2]...a[n],国王作出m条形如(a[si]+a[si+1]+...+a[si+ni ...

  4. poj 1364 King(线性差分约束+超级源点+spfa判负环)

    King Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 14791   Accepted: 5226 Description ...

  5. POJ 1364 King (差分约束)

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

  6. 图论--差分约束--POJ 1364 King

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

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

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

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

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

  9. POJ 1364 / HDU 3666 【差分约束-SPFA】

    POJ 1364 题解:最短路式子:d[v]<=d[u]+w 式子1:sum[a+b+1]−sum[a]>c      —      sum[a]<=sum[a+b+1]−c−1  ...

随机推荐

  1. (转)C#创建windows服务

    原文地址:http://blog.itpub.net/23109131/viewspace-688117/ 第一步:创建服务框架 创建一个新的 Windows 服务项目,可以从Visual C# 工程 ...

  2. 理解JavaScript闭包

    什么是闭包 闭包是指有权访问另一个函数作用域中的变量的函数(有点拗口吧),简单点就是在一个函数的内部创建另外一个函数,并返回这个函数的引用.(这也是创建闭包的常用方式) function outerF ...

  3. 编辑一个小的smarty类

    首先先建立两个文件夹,一个temp,存储编译前的文件,一个comp,存储编译后的文件,编译前的文件使用{$title}代替<?php echo $title; ?>,然后将前者编译成后者再 ...

  4. 过滤网页中HTML代码的ASP函数

    Function LoseHtml(ContentStr) Dim ClsTempLoseStr,regEx ClsTempLoseStr = Cstr(ContentStr) Set regEx = ...

  5. items 与iteritems

    dict的items函数返回的是键值对的元组的列表,而iteritems使用的是键值对的generator. items当使用时会调用整个列表 iteritems当使用时只会调用值. >> ...

  6. linux process 相关命令

    1.显示指定用户信息:ps -u root 2.显示所有进程信息,连同命令行:ps -ef 3. ps 与grep 常用组合用法,查找特定进程:ps -ef|grep ssh 4. 把所有进程显示出来 ...

  7. javascript 第26节 jQuery对象

    <html> <head> <title>jQuery</title> <!--导入jquery库--> <script type=& ...

  8. ubuntu16.04无法连接无线的问题解决方式以及QQ的安装

    0x01 首先我是安装了win10与ubuntu16.04的双系统,不过遇到的问题有启动项与无线连接的问题,今天说一下联网的问题. 连接宽带是正常的,只需要操作sudo pppoeconf 这条命令即 ...

  9. 信息收集->DNS分析->dnsdict6

    如何获取域名的IPV4/IPV6地址之dnsdict6的使用 dnsdict6是一个用于获取网站信息的工具.dnsdict6可以扫描网站并显示有多少域或者子域,也可以扫描ipv6/ipv4地址.dns ...

  10. Ext 初级UI设计

    Ext.Button 说明:该组件代替了传统submit,reset,buuton HTML控件构造参数: text: 按钮上的名称 handler:指定一个函数句柄,在默认事件触发时调用,此时的默认 ...