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 ...
随机推荐
- 解决MVC中使用BundleConfig.RegisterBundles引用Css及js文件发布后丢失的问题
ASP.NET MVC4,ASP.NET MVC5中对JS和CSS的引用又做了一次变化,在MVC3中我们这样引用资源文件: <link href="@Url.Content(" ...
- mac10.9下eclipse的storm开发环境搭建
--------------------------------------- 博文作者:迦壹 博客地址:http://idoall.org/home.php?mod=space&uid=1& ...
- win10-golang环境变量设置
安装go 打开环境变量 添加GOPATH 添加到path 检验 在命令指示符下->go version or go env 配置 在F:\GOPATH下放置C:\go\bin->新建pkg ...
- IIS:开启GZIP压缩效率对比及部署方法
HTTP压缩 HTTP压缩是在Web服务器和浏览器间传输压缩文本内容的方法.HTTP压缩采用通用的压缩算法如GZIP等压缩HTML.JavaScript或CSS文件.压缩的最大好处就是降低了网络传输的 ...
- make自动生成依赖文件的两种形式
最近编译源文件发现当修改头文件后,make并不会自动把包含此头文件的所有源文件重新编译,而每次都是需要把对应的中间文件清除才能重新编译,非常的麻烦.因此需要make自动对源文件所依赖的头文件进行管理, ...
- HTC Vive开发笔记之SteamVR插件集成
重要组件 SteamVR_Camera VR摄像机,主要功能是将Unity摄像机的画面进行变化,形成Vive中的成像画面 使用方法: l 在任一个摄像机上增加脚本 l 点击Expand按钮 完成以上操 ...
- php数据库访问
从$res获取行数据的时候,处理mysql_fetch_row($res),还有三个方法,分别是 mysql_fetch_row($res); 返回一个所以的数组,速度较快. mysql_fetch_ ...
- [HTML] CSS3 圆角
使用 CSS3 border-radius 属性,你可以给任何元素制作 "圆角". CSS3 border-radius 属性 使用 CSS3 border-radius 属性,你 ...
- NBU7.0.1迁移C:\Veritas\Netbackup\db到其他盘
原来NBU MASTER安装在C盘了,导致C盘空间剩余很少,在官网找了一个解决方案如下: - before any operation, of course backup your catalog a ...
- webService访问加密
WebService加密,可以对 WebService设置访问用户名和密码,增强 WebService的安全性 使 WebService只能被授权用户使用. 具体实现步骤: 1. 定义一个 soaph ...