Burn the Linked Camp


Time Limit: 2 Seconds      Memory Limit: 65536 KB

It is well known that, in the period of The Three Empires, Liu Bei, the emperor of the Shu Empire, was defeated by Lu Xun, a general of the Wu Empire. The defeat was due to Liu Bei's wrong decision that he divided his large troops into a number of camps, each of which had a group of armies, and located them in a line. This was the so-called "Linked Camps".

Let's go back to that time. Lu Xun had sent many scouts to obtain the information about his enemy. From his scouts, he knew that Liu Bei had divided his troops into n camps, all of which located in a line, labeled by 1..n from left to right. The ith camp had a maximum capacity of Ci soldiers. Furthermore, by observing the activities Liu Bei's troops had been doing those days, Lu Xun could estimate the least total number of soldiers that were lived in from the ith to the jth camp. Finally, Lu Xun must estimate at least how many soldiers did Liu Bei had, so that he could decide how many troops he should send to burn Liu Bei's Linked Camps.

Input:

There are multiple test cases! On the first line of each test case, there are two integers n (0<n<=1,000) and m (0<=m<=10,000). On the second line, there are n integers C1��Cn. Then m lines follow, each line has three integers i, j, k (0<i<=j<=n, 0<=k<2^31), meaning that the total number of soldiers from the ith camp to the jth camp is at least k.

Output:

For each test case, output one integer in a single line: the least number of all soldiers in Liu Bei's army from Lu Xun's observation. However, Lu Xun's estimations given in the input data may be very unprecise. If his estimations cannot be true, output "Bad Estimations" in a single line instead.

Sample Input:

  1. 3 2
  2. 1000 2000 1000
  3. 1 2 1100
  4. 2 3 1300
  5. 3 1
  6. 100 200 300
  7. 2 3 600

Sample Output:

  1. 1300
  2. Bad Estimations
  3.  
  4. 题目大意:火烧连营
    给出n个军营,每个军营最多有c

i

  1. 个士兵,且[a

i

  1. ,b

i

  1. ]之间至少有k

i

  1. 个士兵,问最少有多少士兵。
  1. #include<cstring>
  2. #include<cstdio>
  3. #include<queue>
  4. using namespace std;
  5. #define N 1010
  6. int n,m;
  7. struct node{
  8. int v,w,next;
  9. }edge[N*];
  10. int head[N],num;
  11. int dis[N],cnt[N];
  12. bool vis[N];
  13. queue<int>q;
  14. void read(int &x)
  15. {
  16. char c=getchar();
  17. int f=;for(;c>''||c<'';c=getchar())if(c=='-')f=-f;x=;for(;c>=''&&c<='';c=getchar())x=(x<<)+(x<<)+c-'';x*=f;
  18. }
  19. void add_edge(int u,int v,int w)
  20. {
  21. edge[++num].v=v;edge[num].w=w;edge[num].next=head[u];head[u]=num;
  22. }
  23. bool spfa()
  24. {
  25. memset(dis,0x3f,sizeof(dis));
  26. memset(vis,,sizeof(vis));
  27. memset(cnt,,sizeof(cnt));
  28. dis[n]=;
  29. vis[n]=;
  30. cnt[n]=;
  31. q.push(n);
  32. while(!q.empty())
  33. {
  34. int u=q.front();
  35. q.pop();
  36. for(int i=head[u];i;i=edge[i].next)
  37. {
  38. int v=edge[i].v;
  39. if(dis[v]>dis[u]+edge[i].w)
  40. {
  41. dis[v]=dis[u]+edge[i].w;
  42. if(!vis[v])
  43. {
  44. vis[v]=;
  45. cnt[v]++;
  46. if(cnt[v]>n)return ;
  47. q.push(v);
  48. }
  49. }
  50. }
  51. vis[u]=;
  52. }
  53. return ;
  54. }
  55. int main()
  56. {
  57. while(scanf("%d%d",&n,&m)==)
  58. {
  59. memset(head,,sizeof(head));
  60. num=;
  61. for(int i=;i<=n;i++)
  62. {
  63. int c;
  64. read(c);
  65. add_edge(i-,i,c);
  66. add_edge(i,i-,);
  67. }
  68. for(int i=;i<=m;i++)
  69. {
  70. int a,b,c;
  71. read(a);read(b);read(c);
  72. add_edge(b,a-,-c);
  73. }
  74. if(spfa())printf("%d\n",-dis[]);
  75. else puts("Bad Estimations");
  76. }
  77. return ;
  78. }

zoj Burn the Linked Camp (查分约束)的更多相关文章

  1. ZOJ 2770 Burn the Linked Camp 差分约束

    链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do? problemCode=2770 Burn the Linked Camp Time Limi ...

  2. Burn the Linked Camp(bellman 差分约束系统)

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

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

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

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

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

  5. poj 1201 Interval (查分约束)

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

  6. ZOJ 2770 Burn the Linked Camp 差分约束 ZOJ排名第一~

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1770 题目大意: 陆逊为了火烧连营七百里,派出了间谍刺探敌情,得之刘备的军营以 ...

  7. zoj 2770 Burn the Linked Camp (差分约束系统)

    // 差分约束系统// 火烧连营 // n个点 m条边 每天边约束i到j这些军营的人数 n个兵营都有容量// Si表示前i个军营的总数 那么 1.Si-S(i-1)<=C[i] 这里 建边(i- ...

  8. ZOJ 2770 Burn the Linked Camp(spfa&&bellman)

    //差分约束 >=求最长路径 <=求最短路径 结果都一样//spfa#include<stdio.h> #include<string.h> #include< ...

  9. zoj2770 Burn the Linked Camp --- 差分约束

    有n个营地,每一个营地至多容纳Ci人.给出m个条件:第i到第j个营地之间至少有k人. 问n个营地总共至少有多少人. 此题显然差分约束.要求最小值.则建立x-y>=z方程组,建图求最长路. 用d[ ...

随机推荐

  1. redhat 安装python3

    一.首先,官网下载python3的所需版本. wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz 想下载到那个文件夹下就先进入到 ...

  2. Homework-09 二维数组动态显示

    思路 主要是把计算的函数由一次跑完全部改成一次一步 主要是把一个3重for循环改为能一步一次的实现 public int nstep(int n){ while((n--)!=0){ //n步长 // ...

  3. maven学习(十六)——使用Maven构建多模块项目

    在平时的Javaweb项目开发中为了便于后期的维护,我们一般会进行分层开发,最常见的就是分为domain(域模型层).dao(数据库访问层).service(业务逻辑层).web(表现层),这样分层之 ...

  4. Vue.js特性

    1. MVVM模式 M:model,业务模型,用处:处理数据和提供数据. V:view,用户界面.用户视图. 业务模型model中的数据发生改变时,用户视图view也随之变化. 用户视图view改变的 ...

  5. HTML5的JavaScript选择器介绍

    在HTML5出现之前使用JavaScript查找DOM元素,有以下三种原生的方法: getElementById:根据指定元素的id属性返回元素 getElementsByName:返回所有指定nam ...

  6. linux系统初始化——文件系统初始化步骤

    linux文件系统初始化步骤 System V init启动过程 概括地讲,Linux/Unix系统一般有两种不同的初始化启动方式. 1) BSD system init 2) System V in ...

  7. 手动编写一个简单的loadrunner脚本

    loadrunner除了自动录制脚本外,还可以手动编写脚本,通过右键+inset step添加步骤,还可以手动添加事务,集合点等 下面是一个简单的Action脚本,服务是运行在本机的flask服务: ...

  8. Windows7下的Run运行命令一览表

    按住Windows键(就是左边Ctrl和Alt之间那个印windows徽标的键,简称Win键)+R,即可弹出运行对话框,在里面输入黑体字符即可运行相应程序.相比XP这次新增了不少新东西. 添加/删除程 ...

  9. HDU1083_Courses_课程_C++

    给你们人工翻译一下题目哈,刚好练一下英语 对于一个组中有 N 个学生和 P 种课程.每个学生能够参加0种,1种或者更多的课程.你的任务是找到一种可能的方案使恰好P个学生同时满足下列条件: ‧ 方案中的 ...

  10. JavaEE中Filter实现用户登录拦截

    实现思路是编写过滤器,如果用户登录之后session中会存一个user.如果未登录就为null,就可以通过过滤器将用户重定向到登陆页面,让用户进行登陆,当然过滤器得判断用户访问的如果是登陆请求需要放行 ...