hdu 1384 Intervals (差分约束)
/*
给你 n 个区间 [Ai, Bi],要求从每一个区间中至少选出 Ci 个数出来组成一个序列 问:满足上面条件的序列的最短长度是多少? 则对于 不等式 f(b)-f(a)>=c,建立 一条 b 到 a 的边 权值为 c,则求的最长路 即为 最小值(集合) 而且有隐含条件:0<=f(a)-f(a-1)<=1 则有边权关系(a,a-1,0)以及(a-1,a,-1);
*/ /*
一般地,差分约束系统分两类:求最大差和最小差 1、求最大差 建立形如 A-B<=C 的不等式。在原图中加入边 <B, A> 边权为 C 对建好的图跑最短路,假设存在负环,无解(推断条件为某点被更新了 n 次)。n 为图中点的数量 2、求最小差 建立形如 A-B>=C 的不等式,在原图中加入边 <B, A> 边权为 C 对建好的图跑最长路,假设存在正环,无解(推断条件为某点被更新了 n 次),n 为图中点的数
*/
# include<stdio.h>
# include<algorithm>
# include<string.h>
# include<queue>
# include<stack>
# define MAX 50010
const int INF=0x3fffff;
using namespace std;
int tot;
int head[MAX];///头节点数组
int vis[MAX];
int dis[MAX];
int minn,maxx;
struct node
{
int u;
int v;
int val;
int next;
} Edge[MAX<<2];
void addEdge(int u,int v,int val)
{
Edge[tot].u=u;
Edge[tot].v=v;
Edge[tot].val=val;
Edge[tot].next=head[u];
head[u]=tot++;
}
void Spfa()
{
for(int i=minn; i<=maxx; i++)
dis[i]=-INF;
queue<int>q;
dis[minn]=0;
vis[minn]=1;
q.push(minn);
while(!q.empty())
{
int u=q.front();
q.pop();
vis[u]=0;
for(int i=head[u]; i!=-1; i=Edge[i].next)
{
int v=Edge[i].v;
if(dis[v]<dis[u]+Edge[i].val)
{
dis[v]=dis[u]+Edge[i].val;
if(!vis[v])
{
vis[v]=1;
q.push(v);
}
}
}
}
printf("%d\n",dis[maxx]);
return ;
}
int main()
{
int n,a,b,c;
while(~scanf("%d",&n))
{
tot=0;
memset(head,-1,sizeof(head));
memset(vis,0,sizeof(vis));
maxx=0;
minn=50010;
for(int i=0; i<n; i++)
{
scanf("%d%d%d",&a,&b,&c);
b++;
if(maxx<b)
maxx=b;
if(minn>a)
minn=a;
addEdge(a,b,c);
}
for(int i=minn; i<maxx; i++) ///隐含边
{
addEdge(i,i+1,0);
addEdge(i+1,i,-1);
}
Spfa();
}
return 0;
}
hdu 1384 Intervals (差分约束)的更多相关文章
- hdu 1384 Intervals (差分约束)
Intervals Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...
- Hdu 1384(差分约束)
题目链接 Intervals Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- hdu 1384 Intervals (差分约束)
Problem - 1384 好歹用了一天,也算是看懂了差分约束的原理,做出第一条查分约束了. 题意是告诉你一些区间中最少有多少元素,最少需要多少个元素才能满足所有要求. 构图的方法是,(a)-> ...
- HDU 1384 Intervals【差分约束-SPFA】
类型:给出一些形如a−b<=k的不等式(或a−b>=k或a−b<k或a−b>k等),问是否有解[是否有负环]或求差的极值[最短/长路径].例子:b−a<=k1,c−b&l ...
- POJ1201 Intervals(差分约束)
Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 28416 Accepted: 10966 Description You ...
- POJ 1364 / HDU 3666 【差分约束-SPFA】
POJ 1364 题解:最短路式子:d[v]<=d[u]+w 式子1:sum[a+b+1]−sum[a]>c — sum[a]<=sum[a+b+1]−c−1 ...
- poj 1716 Integer Intervals (差分约束 或 贪心)
Integer Intervals Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 12192 Accepted: 514 ...
- zoj 1508 Intervals (差分约束)
Intervals Time Limit: 10 Seconds Memory Limit: 32768 KB You are given n closed, integer interva ...
- POJ 3169 Layout (HDU 3592) 差分约束
http://poj.org/problem?id=3169 http://acm.hdu.edu.cn/showproblem.php?pid=3592 题目大意: 一些母牛按序号排成一条直线.有两 ...
随机推荐
- 作诗(si)[分块]
题目描述 神犇SJY虐完HEOI之后给傻×LYD出了一题: SHY是T国的公主,平时的一大爱好是作诗. 由于时间紧迫,SHY作完诗之后还要虐OI,于是SHY找来一篇长度为N的文章,阅读M次,每次只阅读 ...
- java 处理word文档 (含图片,表格内容)
因为本人长期从事Oa相关项目的开发,所以处理word文档,Pdf,Excel等是在所难免的. 1.需求 处理Excel 能够用jxl 或者poi 2需求 用户在系统上填 ...
- FPGA主要应用
FPGA主要应用: 1.逻辑控制(逻辑接口领域) 传统方向,主要用于通信设备的高速接口电路设计,用FPGA处理高速接口的协议,并完成高速的数据收发和交换.FPGA最初以及到目前最广的应用就是在通信领域 ...
- SGU 461 Wiki Lists dfs
不难的题,不过蛮有意思的dfs #include <iostream> #include <cstdio> #include <fstream> #include ...
- HTTP 各种特性应用(二)
一.Cookie 通过 Set-Cookie 设置. 下次浏览器请求就会带上. 键值对,可以设置多个. Cookie 属性 max-age 和 expires 设置过期时间 Secure 只在 htt ...
- MVC5发展历程,从MVC2谈起
目前,MVC已经发布了5个版本,不包括一些临时的版本,为了更好的了解MVC5,知道MVC的发展历程是非常重要的.本篇随笔主要讲解3个版本的内容及其新特性. 1.MVC 2,发布日期:2010年3月 部 ...
- PHP获取文件大小
通过filesize函数可以取得文件的大小,文件大小是以字节数表示的. $filename = '/data/webroot/usercode/code/resource/test.txt'; $si ...
- promise的弊端
promise的弊端 promise彻底解决了callback hell,但也存在以下一些问题 延时问题(涉及到evnet loop)(http://www.ruanyifeng.com/blog/2 ...
- Expression表达式树(C#)
Lambda表达式: 1.下面举例通过Lambda表达式创建了一个用于验证Name的Func委托. //通过Lambda表达式创建一个对象的Name属性验证委托 Func<SearchInfo, ...
- 【Struts2】Struts2纯手工安装、配置以及Helloworld,以最新版struts 2.3.20 GA做样例
很多网上的教程对Struts2的配置.安装弄得不明不白,非常多高手以为小白是什么都懂.很多细节上面的地方没有说明清楚,甚至还有在Maven上面解说的,要知道Struts2跟Maven没有半点的关系.全 ...