vijos1589

听说……这题是贪心啊

我比较傻嘛……不知道怎么搞

第一眼就是差分约束,然而之前只写过一题差分约束,所以,AC的比较艰难……

先是spfa打萎了- -然后是起点处理错了...

然后又是初始化错了

题意很显然,差分约束系统的构造也很好想

对于输入x.y.z,即Ty-T(x-1)>=z

所以我们直接给x-1和y连一条z 的边

显然,每个位置只能放一个西瓜,所以有T(i+1)-Ti>=0,Ti-T(i-1)>=-1

然后构造完成,直接跑spfa

注意初始化-1e9。。。。

#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <queue>
#include <string>
#include <map>
#include <cstring>
#include <ctime>
#include <vector>
#define inf 1e9
#define maxn 10001
#define ll long long
#define For(i,j,k) for(int i=j;i<=k;i++)
#define Dow(i,j,k) for(int i=k;i>=j;i--)
using namespace std;
int poi[maxn],nxt[maxn],v[maxn],f[maxn],cnt,dist[maxn],q[maxn*10],n,m,x,y,z,s;
bool inq[maxn];
inline void add(int x,int y,int z)
{poi[++cnt]=y;nxt[cnt]=f[x];v[cnt]=z;f[x]=cnt;
}
inline void spfa()
{For(i,0,n) dist[i]=-1e9;q[1]=s;dist[s]=0;int l=1,r=1;while(l<=r){int t=q[l];inq[t]=0;for(int i=f[t];i;i=nxt[i])if(dist[poi[i]]<dist[t]+v[i]){if(!inq[poi[i]]) q[++r]=poi[i],inq[poi[i]]=1;dist[poi[i]]=dist[t]+v[i];}l++;}printf("%d",dist[n]);
}
int main()
{scanf("%d%d",&n,&m);s=1e9;For(i,1,m)scanf("%d%d%d",&x,&y,&z),add(x-1,y,z),s=min(x-1,s);For(i,0,n-1)  add(i,i+1,0),add(i+1,i,-1);spfa();
}

差分约束——vijos1589相关推荐

  1. HDU1811 Rank of Tetris 拓扑排序+并查集 OR 差分约束最短路+并查集

    题目链接 题意:就是给你一堆关系,看能不能排出个确定的顺序 做法: 1. 拓扑排序+并查集 应该很容易想到的一种思路,大于小于建立单向边.对于相等的呢,就把他们缩成一个点.就用并查集缩成一个点就行了 ...

  2. HDU3440(差分约束+SPFA算法)

    题意:两栋房子之间的最大距离为D,也就是A-B<=D,现在求出最矮和最高房子之间的最大距离 思路:差分约束+SPFA算法: 当问题可以转化为形如一组 xi‑x'i<=yi 或一组 xi‑x ...

  3. HDU1531(差分约束+Bellman_ford)

    题意:给出一个序列Si = {aSi, aSi+1, ..., aSi+ni} 和其子序列S = {a1, a2, ..., an}:在给出序列的约束条件: aSi + aSi+1 + ... + a ...

  4. poj3159(差分约束)

    题意:其实题目要求的就是这个B-A<=c,所以对应单源最短路径中的d[v]>d[u]+e[u][v] 关于差分约束: 当问题可以转化为形如一组 xi‑x'i<=yi 或一组 xi‑x ...

  5. poj1364(差分约束+Bellman-ford)

    题意:给出一个序列Si = {aSi, aSi+1, ..., aSi+ni} 和其子序列S = {a1, a2, ..., an}:在给出序列的约束条件: aSi + aSi+1 + ... + a ...

  6. poj1201(差分约束+SPFA)

    看到这道题,其实就是和poj1716是差不多的 题意:给出n个闭整数区间[ai,bi]和n个整数C1,.,cn.计算具有区间[ai,bi]的至少ci公共元素的整数集Z的最小大小,对于每一个i=1,2, ...

  7. poj3169(差分约束+SPFA)

    题意:FJ有N头牛,这些牛都站在一条直线上等待,但是现在给出了一些条件: 1.首先列出哪些牛之间彼此喜欢,以及之间的最大距离,也就是A-B<=X 2.随后列出哪些牛之间彼此不喜欢,以及之间的最小 ...

  8. poj1716(差分约束+SPFA)

    题意:整数间隔[a,b],a<b,是以a开头和以b结尾的所有连续整数的集合.在包含至少两个不同整数的集合中找到每个间隔的最小元素数. 思路:采用差分约束算法:当问题可以转化为形如一组 xi‑x' ...

  9. 差分约束问题 ---- 2019ccpc哈尔滨A. Artful Paintings[二分+差分约束+建图剪枝]

    题目链接 题目大意: 有N≤3e3N≤3e3N≤3e3个格子,你可以任意给每个格子染色,但是要满足M≤3e3M≤3e3M≤3e3限制条件,限制条件有两种类型: 区间[l,r][l,r][l,r]中被染 ...

  10. 解题报告:NOIP2013 车站分级(拓扑序递推求解差分约束、建图优化O(n+m)) 超详细讲解

    本题是2013年NOIP普及组的压轴题 差分约束裸题. 计算当前线路中最小的级别(比较始发站和终点站). 整条线路中所有大于这个级别的都必须停靠 所有未停靠的站点的级别一定小于这个级别 也就是说所有未 ...

最新文章

  1. Python报错TypeError: Tuple or struct_time argument required
  2. WINCE6.0添加特定的软件键盘
  3. Java 效率工具之 Lombok
  4. html怎么设置子目录,如何让主域名指向public_html下的子目录
  5. KubeVela 高可扩展的云原生应用平台与核心引擎
  6. WebStorm 关联 TFS(转)
  7. jQuery 的“原型污染”安全漏洞
  8. 云计算实战系列十六(SQL II)
  9. Gtk与Cuda混合编程
  10. 单链表(链式)c/c++实现
  11. Hibernate注解----关联映射注解以及课程总结详解----图片版本
  12. C++ memset()函数和bzero()函数
  13. 计算机病毒鬼畜,[原创]彩虹猫病毒的逆向
  14. Python爬取百度翻译-可以选择语言
  15. 安卓眼球追踪_研究者开发AI眼球追踪系统 智能手机都能用
  16. 澳洲2022人口普查结果出炉--华人占比开始下降
  17. Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
  18. 华为海思芯片型号及特征大全
  19. Python【词云】《长恨歌》
  20. 支付宝支付--手机支付

热门文章

  1. photoshop照片尺寸
  2. PHP读取Excel数据
  3. mac / Ubuntu 终端下添加tree命令显示文件目录结构
  4. Linux 入侵排查
  5. (详细)VMware虚拟机安装Windows7镜像
  6. 小米平板2刷Linux教程,小米平板2刷机教程 官方线刷图文教程
  7. c语言ascii码16进制,C语言附录ASCII码表.doc
  8. 【c++思维导图与代码示例】02 函数
  9. 小波包分解、重构、去噪与matlab函数使用
  10. matlab的小波分析,MATLAB小波分析学习.pdf