poj1364(差分约束系统)
设s[i] 表示a1 + a2 + ... + a(i-1)的和
给我们n个点,m条约束
如果是a b gt c 那么表示 s[a+b+1] - s[a] > c ---> s[a] -s[a+b+1] <-c <=-c-1 --> s[a] <= s[a+b+1] + (-c-1)
如果是a b lt c 那么表示 s[a+b+1] - s[a] < c ---> s[a+b+1] - s[a] <= c - 1 --> s[a+b+1] <= s[a] + (c-1)
题目要问我们是不是所有变量都满足约束条件,如果满足输出lamentable kingdom, 如果不满足,输出successful conspiracy
满不满足约束条件, 即图存不存在负权回路。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <algorithm>
#include <iostream>
#include <queue>
#include <stack>
#include <vector>
#include <map>
#include <set>
#include <string>
#include <math.h>
using namespace std;
#pragma warning(disable:4996)
typedef long long LL;
const int INF = <<;
/*
s[a+b+1] - s[a] >c --> s[a] - s[a+b+1] < -c <= -c-1
s[a+b+1] - s[a] <c --> s[a+b+1] -s[a] < c <= c-1
不连通要我们求环
*/
struct Edge
{
int from,to,dist;
}es[+];
int dist[+];
bool bellman_ford(int n, int m)
{
//因为是求存不存在负权回路,那么只要初始化为0,更新n遍之后,如果还能再更新,那么就存在
for(int i=; i<=n; ++i)
dist[i] = ;
for(int i=; i<=n; ++i)//n+1个点,所以要更新n遍
{
for(int j=; j<m; ++j)
{
Edge &e = es[j];
//因为图是不连通的,所以如果置为INF的时候,不能在这里加这个条件
if(/*dist[e.from]!=INF &&*/ dist[e.to] > dist[e.from] + e.dist)
dist[e.to] = dist[e.from] + e.dist;
}
}
for(int j=; j<m; ++j)
{
Edge &e = es[j];
if(dist[e.to] > dist[e.from] + e.dist)
return false;
}
return true;
}
int main()
{ int n,m,a,b,c,i;
char str[];
while(scanf("%d",&n),n)
{
scanf("%d",&m);
for(i=; i<m; ++i)
{
scanf("%d%d%s%d",&a,&b,str,&c);
if(str[]=='g')
{
es[i].from = a + b + ;
es[i].to = a;
es[i].dist = -c - ;
}
else
{
es[i].from = a;
es[i].to = a + b +;
es[i].dist = c-;
}
}
bool ret = bellman_ford(n,m);
if(ret)
puts("lamentable kingdom");
else
puts("successful conspiracy");
}
return ;
}
poj1364(差分约束系统)的更多相关文章
- UVA11478 Halum [差分约束系统]
https://vjudge.net/problem/UVA-11478 给定一个有向图,每条边都有一个权值.每次你可以选择一个结点v和一个整数d,把所有以v为终点的边的权值减小d,把所有以v为起点的 ...
- BZOJ 2330: [SCOI2011]糖果 [差分约束系统] 【学习笔记】
2330: [SCOI2011]糖果 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 5395 Solved: 1750[Submit][Status ...
- ACM/ICPC 之 差分约束系统两道(ZOJ2770-POJ1201)
当对问题建立数学模型后,发现其是一个差分方程组,那么问题可以转换为最短路问题,一下分别选用Bellmanford-SPFA解题 ZOJ2770-Burn the Linked Camp //差分约束方 ...
- POJ1201 Intervals(差分约束系统)
与ZOJ2770一个建模方式,前缀和当作点. 对于每个区间[a,b]有这么个条件,Sa-Sb-1>=c,然后我就那样连边WA了好几次. 后来偷看数据才想到这题还有两个隐藏的约束条件. 这题前缀和 ...
- UVA 11374 Halum (差分约束系统,最短路)
题意:给定一个带权有向图,每次你可以选择一个结点v 和整数d ,把所有以v为终点的边权值减少d,把所有以v为起点的边权值增加d,最后要让所有的边权值为正,且尽量大.若无解,输出结果.若可无限大,输出结 ...
- Burn the Linked Camp(bellman 差分约束系统)
Burn the Linked Camp Time Limit: 2 Seconds Memory Limit: 65536 KB It is well known that, in the ...
- zoj 2770 Burn the Linked Camp (差分约束系统)
// 差分约束系统// 火烧连营 // n个点 m条边 每天边约束i到j这些军营的人数 n个兵营都有容量// Si表示前i个军营的总数 那么 1.Si-S(i-1)<=C[i] 这里 建边(i- ...
- POJ 3169 Layout (差分约束系统)
Layout 题目链接: Rhttp://acm.hust.edu.cn/vjudge/contest/122685#problem/S Description Like everyone else, ...
- POJ 3169 Layout 差分约束系统
介绍下差分约束系统:就是多个2未知数不等式形如(a-b<=k)的形式 问你有没有解,或者求两个未知数的最大差或者最小差 转化为最短路(或最长路) 1:求最小差的时候,不等式转化为b-a>= ...
- bzoj 2330 [SCOI2011]糖果(差分约束系统)
2330: [SCOI2011]糖果 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 3574 Solved: 1077[Submit][Status ...
随机推荐
- 让AllocateHwnd接受一般函数地址作参数(105篇博客)
http://www.xuebuyuan.com/1889769.html Classes单元的AllocateHWnd函数是需要传入一个处理消息的类的方法的作为参数的,原型: function Al ...
- Visual Studio 控件命名规范(很详细)
VS 控件命名规范 Type Prefix Example Array arr arrShoppingList Boolean bln blnIsPostBack Byte byt bytPixelV ...
- 图解UML类与类之间的六中关系
大话设计模式上的一个图,我用EA画出来的: UML中的6大关系相关英文及音标: 依赖关系 dependency [di'pendənsi] 关联关系 association [ə,səuʃi' ...
- Bootstrap验证控件的使用
前端HTML代码 <form id="myForm" method="post" class="form-horizontal" ac ...
- haproxy配置监控redis主备切换(转)
环境前提: redis sentinel配置,三台主机,且配置运行良好 配置文件中添加: frontend ft_redis bind 0.0.0.0:6379 name re ...
- asp.net(C#)之NPOI"操作Excel
1.首先到网上下载"NPOI.DLL".引用. 2.新建一个操作类"ExcelHelper.cs": using System.Collections.Gene ...
- Python使用cx_Oracle模块连接操作Oracle数据库
1. 简单介绍 cx_Oracle 是一个用来连接并操作 Oracle 数据库的 Python 扩展模块, 支持包含 Oracle 9.2 10.2 以及 11.1 等版本号 2.安装 最好是去官网h ...
- 非对称加密RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)等。使用最广泛的是RSA算法
非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey).公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密:如果用私 ...
- [置顶] CentOS release 5.4 (Final)重置root密码(图文)
- matlab矩阵的表示和简单操作
原地址:http://www.cnblogs.com/Ran_Ran/archive/2010/12/11/1903070.html 一.矩阵的表示在MATLAB中创建矩阵有以下规则: a.矩阵元素必 ...