题目描述:
从前有一个王国,皇后怀孕了。她祈祷到:如果我的孩子是儿子,我希望他是一个健康的国王。 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的更多相关文章

  1. ZOJ1260/POJ1364国王(King)

    // 题意 问是否存在一个长度为n的序列// 这个序列满足m个限制// 每个限制有 si ni oi kisi 为序列位置 ni为从si开始连续长度为ni+1 的子序列 这些子序列和 大于或小于 ki ...

  2. BZOJ 1087: [SCOI2005]互不侵犯King [状压DP]

    1087: [SCOI2005]互不侵犯King Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3336  Solved: 1936[Submit][ ...

  3. [bzoj1087][scoi2005]互不侵犯king

    题目大意 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上 左下右上右下八个方向上附近的各一个格子,共8个格子. 思路 首先,搜索可以放弃,因为这是一 ...

  4. King's Quest —— POJ1904(ZOJ2470)Tarjan缩点

    King's Quest Time Limit: 15000MS Memory Limit: 65536K Case Time Limit: 2000MS Description Once upon ...

  5. 【状压DP】bzoj1087 互不侵犯king

    一.题目 Description 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上.下.左.右,以及左上.左下.右上.右下八个方向上附近的各一个格子,共8个格子. I ...

  6. ZOJ 2334 Monkey King

    并查集+左偏树.....合并的时候用左偏树,合并结束后吧父结点全部定成树的根节点,保证任意两个猴子都可以通过Find找到最厉害的猴子                       Monkey King ...

  7. 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 ...

  8. BZOJ-1087 互不侵犯King 状压DP+DFS预处理

    1087: [SCOI2005]互不侵犯King Time Limit: 10 Sec Memory Limit: 162 MB Submit: 2337 Solved: 1366 [Submit][ ...

  9. POJ1364 King

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

随机推荐

  1. Java 报表之JFreeChart(第一讲)

    1.利用 JFreeChart 创建垂直柱状报表 package com.wcy.chart.bar; import javax.servlet.http.HttpSession; import or ...

  2. Android Studio debug使用release的签名

    当我们在做微信微博sdk分享的时候调试非常麻烦,因为要使用对应的签名版本才能调用sdk成功. 当我们使用AndroidStudio的Gradle之后会很简单的解决这个问题. 1.我们把签名文件放到工程 ...

  3. ubuntu 编译安装 srilm

    Ubuntu 64bit系统下SRILM的配置 依赖软件包(先进行): 1.c/c++ compiler:编译器gcc 3.4.3及以上版本,我的是gcc 4.4 2.GNU make:构建和管理工程 ...

  4. HAProxy安装配置详解

    简介 HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案. HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要 ...

  5. <<人性的弱点>>读书笔记

    书名的英文名其实是<< How to win friends and influence people & how to stop worrying and start livin ...

  6. 关闭BrowserLink-解决异常/arterySignalR/ping未找到

    在使用VS2013 MVC5开发时经常在浏览器的调试窗口看到错误信息,并且每隔两分钟就会出现错误提示:"/365e6ccac83b4cceadee2752a93b81ae/arterySig ...

  7. 修改mongodb3.0副本集用户密码遇到的坑

    最近公司对项目安全方面的问题很是重视,进行了多次各种安全漏洞的扫描,于是乎就扫到了mongodb弱口令的问题. 在项目部署初期,因为大家对这个都不是特别重视,大概是因为觉得反正是内网项目吧,所以mon ...

  8. C++中没有finally,那么应该在如何关闭资源

    这是一篇有趣的帖子 原文链接: http://bbs.csdn.net/topics/90070457 楼主: C++中没有finally,那么应该在哪里关闭资源? C++的try{}catch(){ ...

  9. 【AT91SAM3S】英蓓特EM-SAM3S开发板例子工程中的启动文件分析

    手上一块英倍特的EM-SAM3S开发板,拿到已经有一个月了.本来是做uLoong活动使用的板子,可当初由于不熟悉这个芯片,使用了STM32F4当作了替代.最近准备抽点时间折腾下这个板子. 这个板子的资 ...

  10. SQL Error (1130): Host '192.168.1.126' is not allowed to connect to this MySQL server

    通过HeidiSQL连接MYSQL数据库报错: SQL Error (1130): Host '192.168.1.126' is not allowed to connect to this MyS ...