题意:

      给了由n个数组成的一个数列,然后给你各种区间的和是大于ci还是小于ci啥的,最后问你是否冲突。

思路:

      差分约束水题,不过wa了两次,原因处理区间问题的细节马虎了,说下建图吧,这个题目给的是大于或者小于,不是大于等于啥的,其实这个好办,直接进行相应的+-1就能添加等于号了,然后进行关系转换

假如输入的是 a b str c

b = a + b + 1 //一开始忘记了区间的这个处理方法忘记+1

那么if(str[0] == g)

b - a > c

b - a >= c + 1

直接建边 add(a ,b ,c + 1);

else

b - a < c

b - a <= c - 1

a - b >= -(c-1)

add(b ,a ,-(c-1));

上面的建图是跑最上路的,也可以不这么建图,就是全部都反过来,然后跑最短路,还有就是差分约束很多题目需要我们补充连通性,就是虚拟出来一个0,连接所有点,距离是0,这样是为了防止真个图不连通,当然,如果你想mark然后for去多次最短路也行,这个题目还有一个地方,就是b=a+b+1中的+1可能会导致n+1,所以记得n++后在跑最短路,别的没啥题目不难,不涉及到隐含条件。


#include<queue>
#include<stdio.h>
#include<string.h> #define N_node 100 + 10
#define N_edge 100 + 20
#define INF 1000000000 using namespace std; typedef struct
{
int to ,next ,cost;
}STAR; STAR E[N_edge];
int list[N_node] ,tot;
int s_x[N_node] ,mark[N_node] ,mkc[N_node]; void add(int a ,int b ,int c)
{
E[++tot].to = b;
E[tot].cost = c;
E[tot].next = list[a];
list[a] = tot;
} bool SPFA(int s ,int n)
{
for(int i = 0 ;i <= n ;i ++)
s_x[i] = -INF ,mark[i] = mkc[i] = 0;
queue<int>q;
q.push(s);
s_x[s] = 0;
mark[s] = mkc[s] = 1;
while(!q.empty())
{
int xin ,tou;
tou = q.front();
q.pop();
mark[tou] = 0;
for(int k = list[tou] ;k ;k = E[k].next)
{
xin = E[k].to;
if(s_x[xin] < s_x[tou] + E[k].cost)
{
s_x[xin] = s_x[tou] + E[k].cost;
if(!mark[xin])
{
mark[xin] = 1;
if(++mkc[xin] > n) return 0;
q.push(xin);
}
}
}
}
return 1;
} int main ()
{
int i ,n ,m ,a ,b ,c;
char str[10];
while(~scanf("%d" ,&n) && n)
{
scanf("%d" ,&m);
memset(list ,0 ,sizeof(list));
tot = 1;
for(i = 1 ;i <= m ;i ++)
{
scanf("%d %d %s %d" ,&a ,&b ,str ,&c);
b = a + b + 1;
if(str[0] == 'g') add(a ,b ,c + 1);
else add(b ,a ,-(c - 1));
}
n++;
for(i = 1 ;i <= n ;i ++)
add(0 ,i ,0);
if(!SPFA(0 ,n)) printf("successful conspiracy\n");
else printf("lamentable kingdom\n"); }
return 0;
}

POJ1364基本的查分约束问题的更多相关文章

  1. 洛谷P1993 小 K 的农场(查分约束)

    /* 加深一下对查分约束的理解 建图的时候为了保证所有点联通 虚拟一个点 它与所有点相连 权值为0 然后跑SPFA判负环 这题好像要写dfs的SPFA 要不超时 比较懒 改了改重复进队的条件~ */ ...

  2. codevs 1242 布局(查分约束+SPFA)

    /* 查分约束. 给出的约束既有>= 又有<= 这时统一化成一种 Sb-Sa>=x 建边 a到b 权值为x Sb-Sa<=y => Sa-Sb>=-y 建边 b到a ...

  3. poj 1201 Interval (查分约束)

    /* 数组开大保平安. 查分约束: 输入的时候维护st和end 设每个点取元素di个 维护元素个数前缀和s Sbi-Sai-1>=ci 即:建立一条从ai-1到bi的边 权值为ci 表示ai到b ...

  4. BZOJ2330 糖果题解 查分约束

    BZOJ 2330 糖果题解 差分约束系统 + SPFA 题目传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=2330 Description ...

  5. POJ1094查分约束,判断关系是否唯一

    题意:       给你一些a<b的关系,然后有三组询问. 1 当前这组之后如果能确定这n个数的大小关系,那么就输出关系 2 当前时候出现bug,就是和前面如果冲突,那么就不行 3 最后的答案是 ...

  6. zoj Burn the Linked Camp (查分约束)

    Burn the Linked Camp Time Limit: 2 Seconds      Memory Limit: 65536 KB It is well known that, in the ...

  7. poj 1364 查分约束

    #include<stdio.h> #include<iostream> #include<stack> #include<string.h> usin ...

  8. hdu 1384 查分约束

    #include<stdio.h> /* 要善于挖掘隐含条件 dis[v]-dis[u]>=bian[i].w;一个条件(u,v,bian[i].w); dis[i+1]>=d ...

  9. Integer Intervals POJ - 1716_查分约束_

    Code: #include<cstdio> #include<queue> #include<algorithm> using namespace std; co ...

随机推荐

  1. c#(NPOI)DataTable导出execl,execl(支持解析公式)导入DataTable

    NPOI(C#)DataTable导出execl using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using NPOI.XSSF.UserMod ...

  2. crf++分词

    1.linux下安装crf工具包 先下载CRF++-0.58.tar.xz,在Linux环境下安装CRF工具包 https://github.com/taku910/crfpp 解压到某一个目录下面 ...

  3. Nacos 2.0 正式发布,性能提升 10 倍!!

    3月20号,Nacos 2.0.0 正式发布了! Nacos 简介: 一个更易于构建云原生应用的动态服务发现.配置管理和服务管理平台. 通俗点讲,Nacos 就是一把微服务双刃剑:注册中心 + 配置中 ...

  4. 别再面向 for 循环编程了,JDK 自带的观察者模式就很香!

    大家好,你还在面向 for 循环编程吗? 还有谁不会用观察者模式吗? 本篇栈长带来<观察者模式>理论及实战- 什么是观察者模式? 观察者模式(Observer Pattern)定义了对象间 ...

  5. 全网最详细的Linux命令系列-iptrad-ng网络流量监测命令

    观察网络流量的工具:IPTRAF 想知道你的Linux系统上网络流量有多大吗?想知道是哪一块网卡承载着网络流量吗?想知道哪一个进程产生了网络流量吗?iptraf可以帮你做到.在最新的Linux rel ...

  6. .net 预处理指令符的使用

    目录 什么是预处理指令符? 预处理指令符的使用 自定义指令符 使用Visual Studio快速定义指令符 定义指令符区域 什么是预处理指令符? 当C#编译器找到一条预处理指令#if,最后找到一条指令 ...

  7. HTML5和CSS3提高

    一.HTML5的新特性 HTML5 的新增特性主要是针对于以前的不足,增加了一些新的标签.新的表单和新的表单属性等. 这些新特性都有兼容性问题,基本是 IE9+ 以上版本的浏览器才支持,如果不考虑兼容 ...

  8. 什么是 Jenkins? 运用Jenkins持续集成

    [注]本文译自:https://www.edureka.co/blog/what-is-jenkins/   持续集成是 DevOps 最重要的部分,用于集成各个 DevOps 阶段.Jenkins ...

  9. JS基础学习第五天

    作用域 作用域简单来说就是一个变量的作用范围.在JS中作用域分成两种: 1.全局作用域 直接在script标签中编写的代码都运行在全局作用域中全局作用域在打开页面时创建,在页面关闭时销毁.全局作用域中 ...

  10. (原创)IconFont(矢量图标字体)在Winform中的应用

    一.前言 很多时候,使用矢量图形可以带来非常美观的界面效果,比如SVG的使用.但是Winform原生是不支持显示SVG图像的,所以退而求其次,可以使用IconFont来实现相似的矢量效果. 先来个图解 ...