题意:

      给了由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;
}

最新文章

  1. CSS中如何让元素隐藏
  2. Metasploit辅助模块
  3. ODBC错误处理
  4. 电脑突然死机,系统日志记录事件ID=6008
  5. 《ArcGIS Engine+C#实例开发教程》第四讲 状态栏信息的添加与实现
  6. WCF - Windows Service Hosting
  7. 开发小技巧:C#逐个输出字符
  8. linux下安装php的swoole扩展模块(安装后php加载不出来?)
  9. 基于cx_freeze编译PyQt4程序(numpy &amp; scipy)
  10. nat模式、路由模式,网桥模式
  11. 体验Lua
  12. MySQL的零碎知识点
  13. SQL server与Oracle触发器的创建与使用
  14. 配置网络yum源
  15. DotNetCore跨平台~Dockerfile的解释
  16. IIS asp.net环境
  17. APP性能测试(启动时间)
  18. Imcash:一边大裁员,一边大扩招,你能否成为区块链人才中的7%?
  19. 痞子衡嵌入式:飞思卡尔i.MX RT系列MCU启动那些事(13)- 从Serial(1-bit SPI) EEPROM/NOR恢复启动
  20. SQLServer “无法对数据库&#39;XXX&#39; 执行删除,因为它正用于复制”的解决方法

热门文章

  1. pytorch(07)数据模型的读取
  2. Elasticsearch核心技术(一):Elasticsearch环境搭建
  3. python爬虫(正则取数据)读取表格内的基金代码后爬取基金最新净值,同时写到对应的表格中,基于最近一次购买净值计算出涨跌幅(名字有点长)
  4. HDU_3746 Cyclic Nacklace 【KMP的应用】
  5. 《Selenium自动化测试实战:基于Python》之 Python与Selenium环境的搭建
  6. AggregateReport V2.2.0
  7. java例题_32 取一个整数a从右端开始的4~7位
  8. 使用Gensim库对文本进行词袋、TF-IDF和n-gram方法向量化处理
  9. 设计原则:单一职责(SRP)原则
  10. 201871030112-贾傲羊 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告