zoj1260 king
题目描述:
从前有一个王国,皇后怀孕了。她祈祷到:如果我的孩子是儿子,我希望他是一个健康的国王。 9 个月后,她的孩子出生了,的确,她生了一个漂亮的儿子。但不幸的是,正如皇室家庭经常发生的那样,皇后的儿子智力迟钝。经过多年的学习后,他只能做整数的加法,以及比较加法的结果比给定的一个整数是大还是小。另外,用来求和的数必须排列成一个序列,他只能对序列中连续的整数进行求和。老国王对他的儿子非常不满意。但他决定为他的儿子准备一切,使得在他去世后,他的儿子
还能统治王国。考虑到他儿子的能力,他规定国王需要决断的所有问题必须表示成有限的整数序列,并且国王需要决断的问题只是判断这个序列的和与给定的一个约束的大小关系。作了这样的规定,至少还有一些希望:他的儿子能做出一些决策。老国王去世后,新国王开始统治王国。但很快,人们开始不满意他的决策,决定废除他。人们试图通过证明新国王的决策是错误的,从而名正言顺地废除新国王。因此,试图篡位的人们给新国王出了一些题目,让国王做出决策。问题是从序列 S = {a1, a2, ...,an}中取出一个子序列 Si = {aSi, aSi+1, ..., aSi+ni}。国王有一分钟的思考时间, 然后必须做出判断:他对每个子序列 Si 中的整数进行求和,即 aSi + aSi+1 + ... + aSi+ni,然后对每个子序列的和设定一个约束 ki,即 aSi + aSi+1 + ... + aSi+ni < ki,或 aSi + aSi+1 + ... + aSi+ni > ki。过了一会,他意识到他的判断是错误的。他不能取消他设定的约束,但他努力挽救自己:通过伪造篡位者给他的整数序列。他命令他的幕僚找出这样的一个序列 S,满足他设定的这些约束。请帮助幕僚,编写程序,判断这样的序列是否存在。
输入描述:
输入文件中包含多块输入。除最后一块输入外,每块输入对应一组问题及国王的决策。每块输入的第 1 行为两个整数: n 和 m,其中 0<n≤100 表示序列 S 的长度, 0<m≤100 为子序列 Si的个数。接下来有 m 行为国王的决策,每个决策的格式为: si, ni, oi, ki,其中 oi 代表关系运算符">"(用"gt"表示)、或"<"(用"lt"表示), si、 ni 和 ki 的含义如题目描述中所述。最后一块输入只有一行,为 0,表示输入结束。
输出描述:
对输入文件中的每块输入,输出占一行字符串:当满足约束的序列 S 不存在时,输出"successful conspiracy";否则输出"lamentable kingdom"。对最后一块输入,没有输出内容。
样例输入:
4 2
1 2 gt 0
2 2 lt 2
1 2
1 0 gt 0
1 0 lt 0
0
样例输出:
lamentable kingdom
successful conspiracy
______________________________________________________
又是一道差分约束,大同小异,唯一与前面不同之处在于需要给他认为提供一个源点,从而计算其他点的最短距离,判断是否会有负环。
_______________________________________________________
#include<cstdio>
#include<iostream>
#include<cstring>
#include<queue>
#include<algorithm> using namespace std;
const int maxm=;
int n,m;
struct edge
{
int u,v,w,next;
}e[maxm];
int head[],js;
void init()
{
memset(head,,sizeof(head));
js=;
}
void addage(int u,int v,int w)
{
e[++js].u=u;e[js].v=v;e[js].w=w;
e[js].next=head[u];head[u]=js;
}
queue<int>q;
int dis[];
bool inq[];
int inqt[];
bool spfa()
{
memset(inq,,sizeof(inq));
memset(inqt,,sizeof(inqt));
memset(dis,0x7f,sizeof(dis));
dis[]=;
inq[]=;
inqt[]=;
q.push();
while(!q.empty())
{
int u=q.front();
q.pop();
inq[u]=;
for(int i=head[u];i;i=e[i].next)
{
int v=e[i].v;
if(dis[v]>dis[u]+e[i].w)
{
dis[v]=dis[u]+e[i].w;
if(!inq[v])
{
q.push(v);
inq[v]=;
inqt[v]++;
if(inqt[v]>)
return ;
}
}
}
}
return ;
}
int main()
{
while(scanf("%d%d",&n,&m)==)
{
init();
int si,ni,ki;
char oi[];
for(int i=;i<m;i++)
{
scanf("%d%d%s%d",&si,&ni,oi,&ki);
if(oi[]=='g')
{
addage(si+ni,si-,-ki-);
addage(,si+ni,);
addage(,si-,);
}
else
{
addage(si-,si+ni,ki-);
addage(,si+ni,);
addage(,si-,);
}
}
if(spfa())printf("lamentable kingdom\n");
else printf("successful conspiracy\n");
}
return ;
}
zoj1260 king的更多相关文章
- ZOJ1260/POJ1364国王(King)
// 题意 问是否存在一个长度为n的序列// 这个序列满足m个限制// 每个限制有 si ni oi kisi 为序列位置 ni为从si开始连续长度为ni+1 的子序列 这些子序列和 大于或小于 ki ...
- BZOJ 1087: [SCOI2005]互不侵犯King [状压DP]
1087: [SCOI2005]互不侵犯King Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3336 Solved: 1936[Submit][ ...
- [bzoj1087][scoi2005]互不侵犯king
题目大意 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上 左下右上右下八个方向上附近的各一个格子,共8个格子. 思路 首先,搜索可以放弃,因为这是一 ...
- King's Quest —— POJ1904(ZOJ2470)Tarjan缩点
King's Quest Time Limit: 15000MS Memory Limit: 65536K Case Time Limit: 2000MS Description Once upon ...
- 【状压DP】bzoj1087 互不侵犯king
一.题目 Description 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上.下.左.右,以及左上.左下.右上.右下八个方向上附近的各一个格子,共8个格子. I ...
- ZOJ 2334 Monkey King
并查集+左偏树.....合并的时候用左偏树,合并结束后吧父结点全部定成树的根节点,保证任意两个猴子都可以通过Find找到最厉害的猴子 Monkey King ...
- ACM ICPC 2015 Moscow Subregional Russia, Moscow, Dolgoprudny, October, 18, 2015 K. King’s Rout
K. King's Rout time limit per test 4 seconds memory limit per test 512 megabytes input standard inpu ...
- BZOJ-1087 互不侵犯King 状压DP+DFS预处理
1087: [SCOI2005]互不侵犯King Time Limit: 10 Sec Memory Limit: 162 MB Submit: 2337 Solved: 1366 [Submit][ ...
- POJ1364 King
Description Once, in one kingdom, there was a queen and that queen was expecting a baby. The queen p ...
随机推荐
- [BZOJ 3530][Sdoi 2014]数数
阿拉~好像最近总是做到 AC 自动机的题目呢喵~ 题目的算法似乎马上就能猜到的样子…… AC 自动机 + 数位 dp 先暴力转移出 f[i][j] :表示从 AC 自动机上第 j 号节点走 i 步且不 ...
- python 元组操作
关于元组的常用操作,请参考:http://www.runoob.com/python/python-tuples.html 元组的元素不可修改 ,元组的元素的元素可修改 count(self,valu ...
- [转载]QQ空间技术架构之深刻揭密
1. 拥有5.5亿的活跃用户 2. 过万台的设备 3. 数千万级别的同时在线 4. 数十亿级别的全站PV 5. P级的UGC存储量 6. 每天千亿级别的服务请求 图1--QQ空间海量服务数据规模 接下 ...
- Redis客户端之Spring整合Jedis,ShardedJedisPool集群配置
Jedis设计 Jedis作为推荐的java语言redis客户端,其抽象封装为三部分: 对象池设计:Pool,JedisPool,GenericObjectPool,BasePoolableObjec ...
- CMD规范
define(function (require, exports, module) { module.exports = require('xx/xx/xx')({}); });
- SQL阻塞原因造成系统多功能无响应的分析解决思路
最近遇到一个sqlserver项目,月底会出现多个财务相关功能出现不定期操作无响应问题 通过查询SQL阻塞信息,定位到阻塞源头spid.该会话的状态.等待事件及执行的SQL脚本 根据spid查询该会话 ...
- Hadoop学习19--推测式执行
所谓推测式执行,就是计算框架判断,如果有一个task执行的过慢,则会启动备份任务,最终使用原任务+备份任务中执行较快task的结果.产生原因一般是程序bug.负载倾斜. 那么这个较慢,是怎么判断的呢? ...
- MRD
搜索 复制
- 闲谈Tomcat性能优化
Tomcat在各位JavaWeb从业者常常就是默认的开发环境,但是Tomcat的默认配置作为生产环境,尤其是内存和线程的配置,默认都很低,容易成为性能瓶颈. 幸好Tomcat还有很多的提升空间.下文介 ...
- 鸟哥的linux私房菜学习
cat /etc/shells 系统拥有的shellcat /etc/passwd 记录用户使用的shell按两次 tab 键可显示所有可执行的指令alias 查看所有命令的别名alias lm='l ...