TYVJ1415 差分约束
思路:
i–>i+1连一条边权为0的边
i–>i-1连一条边权为-1的边
start-1 —>end 连一条边权为w的边
求0—>n的最长路即可
//By SiriusRen
#include <queue>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define N 22222
int next[N],first[N],v[N],w[N],tot=0;
int n,m,xx,inq[N],dis[N];
void spfa(){queue<int>q;q.push(0);while(!q.empty()){int t=q.front();q.pop();inq[t]=0;for(int i=first[t];~i;i=next[i])if(dis[v[i]]<dis[t]+w[i]){dis[v[i]]=dis[t]+w[i];if(!inq[v[i]])inq[v[i]]=1,q.push(v[i]);}}
}
int main(){memset(first,-1,sizeof(first));memset(dis,-1,sizeof(dis));scanf("%d%d",&n,&m);for(int i=1;i<=m;i++){scanf("%d%d%d",&xx,&v[tot],&w[tot]);next[tot]=first[xx-1],first[xx-1]=tot++;}for(int i=1;i<=n;i++)w[tot]=0,v[tot]=i,next[tot]=first[i-1],first[i-1]=tot++;for(int i=0;i<=n;i++)w[tot]=-1,v[tot]=i,next[tot]=first[i+1],first[i+1]=tot++;dis[0]=0;spfa();printf("%d\n",dis[n]);
}
转载于:https://www.cnblogs.com/SiriusRen/p/6532322.html
TYVJ1415 差分约束相关推荐
- HDU1811 Rank of Tetris 拓扑排序+并查集 OR 差分约束最短路+并查集
题目链接 题意:就是给你一堆关系,看能不能排出个确定的顺序 做法: 1. 拓扑排序+并查集 应该很容易想到的一种思路,大于小于建立单向边.对于相等的呢,就把他们缩成一个点.就用并查集缩成一个点就行了 ...
- HDU3440(差分约束+SPFA算法)
题意:两栋房子之间的最大距离为D,也就是A-B<=D,现在求出最矮和最高房子之间的最大距离 思路:差分约束+SPFA算法: 当问题可以转化为形如一组 xi‑x'i<=yi 或一组 xi‑x ...
- HDU1531(差分约束+Bellman_ford)
题意:给出一个序列Si = {aSi, aSi+1, ..., aSi+ni} 和其子序列S = {a1, a2, ..., an}:在给出序列的约束条件: aSi + aSi+1 + ... + a ...
- poj3159(差分约束)
题意:其实题目要求的就是这个B-A<=c,所以对应单源最短路径中的d[v]>d[u]+e[u][v] 关于差分约束: 当问题可以转化为形如一组 xi‑x'i<=yi 或一组 xi‑x ...
- poj1364(差分约束+Bellman-ford)
题意:给出一个序列Si = {aSi, aSi+1, ..., aSi+ni} 和其子序列S = {a1, a2, ..., an}:在给出序列的约束条件: aSi + aSi+1 + ... + a ...
- poj1201(差分约束+SPFA)
看到这道题,其实就是和poj1716是差不多的 题意:给出n个闭整数区间[ai,bi]和n个整数C1,.,cn.计算具有区间[ai,bi]的至少ci公共元素的整数集Z的最小大小,对于每一个i=1,2, ...
- poj3169(差分约束+SPFA)
题意:FJ有N头牛,这些牛都站在一条直线上等待,但是现在给出了一些条件: 1.首先列出哪些牛之间彼此喜欢,以及之间的最大距离,也就是A-B<=X 2.随后列出哪些牛之间彼此不喜欢,以及之间的最小 ...
- poj1716(差分约束+SPFA)
题意:整数间隔[a,b],a<b,是以a开头和以b结尾的所有连续整数的集合.在包含至少两个不同整数的集合中找到每个间隔的最小元素数. 思路:采用差分约束算法:当问题可以转化为形如一组 xi‑x' ...
- 差分约束问题 ---- 2019ccpc哈尔滨A. Artful Paintings[二分+差分约束+建图剪枝]
题目链接 题目大意: 有N≤3e3N≤3e3N≤3e3个格子,你可以任意给每个格子染色,但是要满足M≤3e3M≤3e3M≤3e3限制条件,限制条件有两种类型: 区间[l,r][l,r][l,r]中被染 ...
最新文章
- 2021年大数据ELK(四):Lucene的美文搜索案例
- 浅谈单片机程序设计中的“分层思想”
- caffe之mac下环境搭建
- (素材源码)猫猫学IOS(十六)UI之XIB自定义Cell实现团购UI
- Scrapy-xpath用法以及实例
- 一种使用蒸汽眼罩保养的方法
- volatile能保持线程安全吗_从volatile说到i++的线程安全问题
- 树回归--python Tkinter库创建GUI(2)
- java file gettext_避免使用.properties文件GNU Gettext Java
- Nginx 服务并发过10万的Linux内核优化配置
- 高仿真的类-请求url
- 有一种感情,叫“发小”
- 容器对象模式。 一种新的测试模式。
- MYSQL 常用查询命令
- centos 增加分区容量
- Gensim进阶教程
- json_extract提取复杂json_Python中高效使用JSON的四个小窍门
- 如何设置word的有效期
- 如何让自己成为一个优秀的Java架构师,而不是码农
- GC是什么? 为什么要有GC?