POJ 1201 差分方程分析
POJ 1201
给你N个闭区间。每个区间分别为[ai,bi],你必须在这个区间上至少取ci个不同的整数。
现要求所有区间满足各自的条件。
问最少需要选多少个点。
例如[3,7](3) [8,10](3) [6,8](1) [1,3](1) [10,11](1)
我们最少需要选6个点:
3 4 6 8 9 10
在这里我们可以看成是dp[7]-dp[2]>=3 dp[10]-dp[8]>=3 ....
这就可以理解为2->7的距离可以定为3,8->10的距离也定为3
我们再看看Si的定义,也不难写出0<=Si - Si-1<=1的限制条件,虽然看上去是没有什么意义的条件,但是如果你也把它构造出一系列的边的话,这样从起点到终点的最短路也就顺理成章的出现了。
我们将上面的限制条件写为同意的形式:
Sbi - Sai >= ci
Si - Si-1 >= 0
Si-1 - Si >= -1
这样子我们相当于在一个构建好的有向图中找一个最长路径,这跟之前的最短路径正好相反,所以需要引起注意
那么dp在初始化时需尽可能小,才能不断更新出最大值
for(int i=first[u];i!=-;i=area[i].next){
if(dp[area[i].y]<dp[u]+area[i].d){
dp[area[i].y]=dp[u]+area[i].d;
if(!visit[area[i].y])
visit[area[i].y]=,q.push(area[i].y);
}
所以这里要引起注意,要在小于的情况下继续执行程序,不断更新出最大值。
对于一个差分问题来说是可能存在无解的情况的,那说明形成的是负圈,但这道题目明显表示有解,所以无需进行负圈的判断。
总代码如下:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
#include <cmath>
using namespace std;
#define N 50005
#define M 200000 int visit[N],dp[N],first[N],k,n,m,maxn,minn; struct Area{
int y,next,d;
}area[M]; void init()
{
k=,maxn=,minn=N;
memset(first,-,sizeof(first));
} void add(int a,int b,int c){
area[k].y=b,area[k].d=c,area[k].next=first[a];
first[a]=k;
k++;
} void spfa()
{
memset(visit,,sizeof(visit));
queue<int> q;
memset(dp,-,sizeof(dp));
dp[minn]=,visit[minn]=,q.push(minn);
while(!q.empty()){
int u=q.front();
q.pop();
visit[u]=;
for(int i=first[u];i!=-;i=area[i].next){
if(dp[area[i].y]<dp[u]+area[i].d){
dp[area[i].y]=dp[u]+area[i].d;
if(!visit[area[i].y])
visit[area[i].y]=,q.push(area[i].y);
}
}
}
} int main()
{
int a,b,c;
while(scanf("%d",&n)!=EOF){
init();
for(int i=;i<n;i++)
{
scanf("%d%d%d",&a,&b,&c);
//add(b,a-1,-c);
add(a,b+,c);
maxn=max(maxn,b+);
minn=min(minn,a);
}
for(int i=minn;i<maxn;i++){
add(i,i+,);
add(i+,i,-);
}
spfa(); printf("%d\n",dp[maxn]);
}
return ;
}
POJ 1201 差分方程分析的更多相关文章
- POJ 1201 && HDU 1384 Intervals(差动制动系统)
职务地址:POJ 1201 HDU 1384 依据题目意思.能够列出不等式例如以下: Sj-Si>=c; Si-S(i-1)>=0; S(i-1)-Si>=-1; 然后用最短路s ...
- poj 1201 Intervals 解题报告
Intervals Time Limit: 2000MS Memory Limit: 65536KB 64bit IO Format: %lld & %llu Submit Statu ...
- 【POJ 1201】 Intervals(差分约束系统)
[POJ 1201] Intervals(差分约束系统) 11 1716的升级版 把原本固定的边权改为不固定. Intervals Time Limit: 2000MS Memory Limit: ...
- POJ 1201 Intervals || POJ 1716 Integer Intervals 差分约束
POJ 1201 http://poj.org/problem?id=1201 题目大意: 有一个序列,题目用n个整数组合 [ai,bi,ci]来描述它,[ai,bi,ci]表示在该序列中处于[ai, ...
- poj 1201 Intervals(差分约束)
题目:http://poj.org/problem?id=1201 题意:给定n组数据,每组有ai,bi,ci,要求在区间[ai,bi]内至少找ci个数, 并使得找的数字组成的数组Z的长度最小. #i ...
- poj 1201 Intervals——差分约束裸题
题目:http://poj.org/problem?id=1201 差分约束裸套路:前缀和 本题可以不把源点向每个点连一条0的边,可以直接把0点作为源点.这样会快许多! 可能是因为 i-1 向 i 都 ...
- POJ 1201 & HDU1384 & ZOJ 1508 Intervals(差分约束+spfa 求最长路径)
题目链接: POJ:http://poj.org/problem?id=1201 HDU:http://acm.hdu.edu.cn/showproblem.php? pid=1384 ZOJ:htt ...
- 【38.24%】【POJ 1201】Intervals
Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 25902 Accepted: 9905 Description You are ...
- POJ 1201 Intervals【差分约束】
传送门:http://poj.org/problem?id=1201 题意: 有n个如下形式的条件:,表示在区间[, ]内至少要选择个整数点.问你满足以上所有条件,最少需要选多少个点? 思路:第一道差 ...
随机推荐
- Mysql选择合适的存储引擎
Myisam:默认的mysql插件式存储引擎.如果应用是以读操作和插入操作为主,只有很少的更新和删除操作,并且对事务的完整性.并发性要求不是很高,那么选择这个存储引擎是非常合适的.Myisam是在we ...
- ES--在windows上快速安装
环境准备 java环境部署: Java下载路径:http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a ...
- MongoDB管理练习
一.索引 1.插入10W条数据 文档内容为:{name:zs-i,age:1} 2016-06-07T14:35:57.041+0800 I CONTROL [initandlisten] > ...
- 01.第一章_C++ Primer学习笔记_开始
1.2 初始输入输出 iostream库里面包含两个基础类型istream和ostream,分别表示输入流和输出流,一个流就是一个字符序列,从IO设备读出或者写入IO设备. 标准的输入输出对象 标准库 ...
- ionic之自定义图片
一个好的app,必须都有很好的ui设计师来设计界面,增强客户的体验,表现自己本身公司的特色,但是,在ionic中有些是无法用img标签直接引入图片,只能通过设定的css之后引入css. 页面: < ...
- android开发学习 ------- RecyclerView多类型实例
实现RecyclerView多类型的实例:效果如下图所示 public class CarFragment extends Fragment{ private View view; private R ...
- poj1857 To Europe! To Europe!
思路: 一维dp. 实现: #include <cstdio> #include <iostream> using namespace std; const int INF = ...
- 【经验总结】关于使用某些第三方插件库元素设置display:none后重新show不显示的问题;(display、opacity、宽高0的使用场景)
display:none 直接取消元素所占用的位置(但是元素还是存在的),后面元素看他就相当于不存在了: opacity:0 隐藏,但是其依旧占用位置: height.width:0 和displa ...
- iPhone4 offical AD
iPhone4 is so much more than just a new products.I mean this would have a lot of impact on the way i ...
- tar.bz2
tar -xvjf gcc-4.1.0.tar.bz2 bzip2 -d gcc-4.1.0.tar.bz2