POJ 1364:King(差分约束)
题目大意:判断是否存在一个长度为n的序列满足给出的不等关系。
分析:
将序列和转化成用两个前缀和之差来表示即可变为差分约束系统。
需要注意的是不能忘记n要加+1,因为还有一个特殊源点,自己因为n:=n+1的位置放在数组预处理的后面所以出错了。
代码:
program king;
type
point=^node;
node=record
x,len:longint; next:point;
end;
var
a:array[..]of point;
q:array[..]of longint;
dis,vis:array[..]of longint;
g:array[..]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;
begin
new(p);
p^.x:=x; p^.len:=v; p^.next:=a[y];a[y]:=p;
end;
procedure getnew;
var i:longint;
begin
fillchar(q,sizeof(q),);
fillchar(g,sizeof(g),false); fillchar(vis,sizeof(vis),);
for i:= to n do dis[i]:=maxlongint div ;
for i:= to n do begin dispose(a[i]); new(a[i]); a[i]:=nil; end;
dis[n]:=; g[n]:=true; q[]:=n;
end;
function spfa:boolean;
var x,y,h,t:longint; p:point;
begin
h:=; t:=;
while h<t do
begin
inc(h); x:=q[h]; g[x]:=false; new(p);p:=a[x];
while p<>nil do
begin
y:=p^.x;
if dis[x]+p^.len<dis[y] then
begin
dis[y]:=dis[x]+p^.len;
if g[y]=false then
begin
inc(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;
begin
read(n);
while n> do
begin
inc(n); getnew;
read(m); readln;
for i:= to n- do put(i,n,);
for i:= to m do
begin
readln(s1);
t:=pos('t',s1); l:=pos(' ',s1);
val(copy(s1,,l-),x); val(copy(s1,l+,t--l),y);val(copy(s1,t+,length(s1)-t-),v);
if s1[t-]='l' then put(x+y,x-,v-);
if s1[t-]='g' then put(x-,x+y,-v-);
end;
if spfa then writeln('lamentable kingdom') else writeln('successful conspiracy');
read(n);
end;
end.
POJ 1364:King(差分约束)的更多相关文章
- POJ 1364 King --差分约束第一题
题意:求给定的一组不等式是否有解,不等式要么是:SUM(Xi) (a<=i<=b) > k (1) 要么是 SUM(Xi) (a<=i<=b) < k (2) 分析 ...
- [poj 1364]King[差分约束详解(续篇)][超级源点][SPFA][Bellman-Ford]
题意 有n个数的序列, 下标为[1.. N ], 限制条件为: 下标从 si 到 si+ni 的项求和 < 或 > ki. 一共有m个限制条件. 问是否存在满足条件的序列. 思路 转化为差 ...
- poj 1364 King(差分约束)
题目:http://poj.org/problem?id=1364 #include <iostream> #include <cstdio> #include <cst ...
- POJ 1364 King (UVA 515) 差分约束
http://poj.org/problem?id=1364 http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemi ...
- poj 1364 King(差分约束)
题意(真坑):傻国王只会求和,以及比较大小.阴谋家们想推翻他,于是想坑他,上交了一串长度为n的序列a[1],a[2]...a[n],国王作出m条形如(a[si]+a[si+1]+...+a[si+ni ...
- POJ 1364 King (差分约束)
King Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 8660 Accepted: 3263 Description ...
- POJ 1364 King
http://poj.org/problem?id=1364 题意 :给出一个序列a1,a2,a3,a4.....ai,......at ;然后给你一个不等式使得ai+a(i+1)+a(i+2)+.. ...
- poj 1201 Intervals(差分约束)
题目:http://poj.org/problem?id=1201 题意:给定n组数据,每组有ai,bi,ci,要求在区间[ai,bi]内至少找ci个数, 并使得找的数字组成的数组Z的长度最小. #i ...
- poj 1201 Intervals——差分约束裸题
题目:http://poj.org/problem?id=1201 差分约束裸套路:前缀和 本题可以不把源点向每个点连一条0的边,可以直接把0点作为源点.这样会快许多! 可能是因为 i-1 向 i 都 ...
- POJ——1364King(差分约束SPFA判负环+前向星)
King Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 11946 Accepted: 4365 Description ...
随机推荐
- 集成Ehcache用来缓存表以后,怎么设置缓存刷新时间
问答 集成Ehcache用来缓存表以后,怎么设置缓存刷新时间 发布于 217天前 作者 老司机 93 次浏览 复制 上一个帖子 下一个帖子 标签: 无 集成Ehcache用来缓存表以后, ...
- python_50_函数与函数式编程
import time def logger(): """追加写""" time_format='%Y-%m-%d %X'#年-月-日 小时 ...
- python_43_移动文件指针补充
#移动文件指针补充 ''' 文件对象.seek((offset,where)) offset:移动的偏移量,单位为字节.等于正数时向文件尾方向移动,等于负数时向文件头方向移动文件指针 where:指针 ...
- SQLAlchemy简介
一.SQLAlchemy简介 SQLAlchemy是Python SQL工具包和对象关系映射器,是python中最著名的ORM(Object Relationship Mapping)框架,它简化了应 ...
- tomcat服务器用Servlet类查找磁盘文件上的Json信息,如果匹配则在浏览器上显示出该条内容的全部信息
package com.swift; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOE ...
- 更改 Linux 语言为中文
查看当前系统语言环境: echo $LANG 查看安了哪些中文语言包 locale -a |grep "zh_CN" 没有输出,说明没有安装,输入下面的命令安装 ...
- python字典按照k,v来排序
按照 k 排序 按照 v 排序
- shell基础及变量符号
kernel主要的功能: 1.内存的管理 2.设备驱动程序 3.文件系统的管理 4.进程的管理 5.网络系统 vim /etc/profile.d/ profile(主配置文件) .d(子配置文件 ...
- 三、Shell 传递参数
Shell 传递参数 我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n.n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推…… 实例 以 ...
- ARM协处理器
协处理器是一种芯片,用于减轻系统微处理器的特定处理任务.例如,数学协处理器可以控制数字处理:图形协处理器可以处理视频绘制.例如,intel pentium微处理器就包括内置的数学协处理器. 协处理器 ...