差分约束——vijos1589
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相关推荐
- 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]中被染 ...
- 解题报告:NOIP2013 车站分级(拓扑序递推求解差分约束、建图优化O(n+m)) 超详细讲解
本题是2013年NOIP普及组的压轴题 差分约束裸题. 计算当前线路中最小的级别(比较始发站和终点站). 整条线路中所有大于这个级别的都必须停靠 所有未停靠的站点的级别一定小于这个级别 也就是说所有未 ...
最新文章
- Python报错TypeError: Tuple or struct_time argument required
- WINCE6.0添加特定的软件键盘
- Java 效率工具之 Lombok
- html怎么设置子目录,如何让主域名指向public_html下的子目录
- KubeVela 高可扩展的云原生应用平台与核心引擎
- WebStorm 关联 TFS(转)
- jQuery 的“原型污染”安全漏洞
- 云计算实战系列十六(SQL II)
- Gtk与Cuda混合编程
- 单链表(链式)c/c++实现
- Hibernate注解----关联映射注解以及课程总结详解----图片版本
- C++ memset()函数和bzero()函数
- 计算机病毒鬼畜,[原创]彩虹猫病毒的逆向
- Python爬取百度翻译-可以选择语言
- 安卓眼球追踪_研究者开发AI眼球追踪系统 智能手机都能用
- 澳洲2022人口普查结果出炉--华人占比开始下降
- Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
- 华为海思芯片型号及特征大全
- Python【词云】《长恨歌》
- 支付宝支付--手机支付