题目:

Sample Input

5
3 7 3
8 10 3
6 8 1
1 3 1
10 11 1

Sample Output

6

题意:

  我们选数,每个数只能选一次。给定n个条件[ai,bi]和ci,表示区间[ai,bi]中至少选ci个数,问一共最少选多少个数。

分析:

  设xi为小于等于i的数中选了多少个数。对于条件[ai,bi]、ci,我们有bi-ai-1>=ci,是差分约束系统,可以用最短路求解。

  另外,题目中有比较隐蔽的条件:每个数只能选一个,一个数选的次数也不能为负,那么就是说对于相邻的两个数x、y,有0<=y-x<=1,要根据这个条件建边才能保证答案无误。

  最后输出Xmx-Xmn。(差分约束系统要不无解,要不有无数解,因为一旦有解只要保证他们之间差值不变即可。题目问一共最少选多少个数,而xi的最小值为0,所以答案为Xmx-Xmn)

代码如下:

 #include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
using namespace std;
#define Maxn 50010
#define INF 0xfffffff struct node
{
int x,y,c,next;
}t[Maxn*];int len=; int first[Maxn],cnt[Maxn],dis[Maxn];
bool bq[Maxn],inq[Maxn]; int mymin(int x,int y) {return x<y?x:y;}
int mymax(int x,int y) {return x>y?x:y;} void ins(int x,int y,int c)
{
t[++len].x=x;t[len].y=y;t[len].c=c;
t[len].next=first[x];first[x]=len;
} queue<int > q; void spfa(int s)
{
memset(dis,,sizeof(dis));
memset(inq,,sizeof(inq));
memset(cnt,,sizeof(cnt));
if(!q.empty()) q.pop();
dis[s]=;inq[s]=;q.push(s);
while(!q.empty())
{
int x=q.front();q.pop();inq[x]=;
for(int i=first[x];i;i=t[i].next)
{
int y=t[i].y;
if(dis[y]>dis[x]+t[i].c)
{
dis[y]=dis[x]+t[i].c;
if(!inq[y])
{
q.push(y);
inq[y]=;
}
}
}
}
} int main()
{
int m,mx=,mn=INF;
scanf("%d",&m);
memset(first,,sizeof(first));
memset(bq,,sizeof(bq));
for(int i=;i<=m;i++)
{
int x,y,c;
scanf("%d%d%d",&x,&y,&c);x++;y++;
ins(y,x-,-c);
bq[x]=bq[y]=;
mx=mymax(mx,y);mn=mymin(mn,x-);
}
for(int i=mn;i<mx;i++) ins(i+,i,);
for(int i=mn;i<mx;i++) ins(i,i+,);
for(int i=mn;i<=mx;i++) ins(mx+,i,);
spfa(mx+);
//for(int i=mn;i<=mx;i++) printf("%d %d\n",i,dis[i]);
printf("%d\n",dis[mx]-dis[mn]);
return ;
}

[POJ1201]

感觉自己考虑问题总是不全面啊。

2016-04-10 16:31:30

【POJ1021】Intervals (最短路解差分约束)的更多相关文章

  1. 【UVA11478】Halum (最短路解差分约束)

    题目: Sample Input2 11 2 102 11 2 -103 31 2 42 3 23 1 54 52 3 44 2 53 4 23 1 01 2 -1Sample OutputInfin ...

  2. poj3169 最短路(差分约束)

    题意:一个农夫有n头牛,他希望将这些牛按照编号 1-n排成一条直线,允许有几头牛站在同一点,但是必须按照顺序,有一些牛关系比较好,希望站的距离不超过某个值,而有一些牛关系不太好,所以希望站的距离大于等 ...

  3. poj3159 最短路(差分约束)

    题意:现在需要分糖果,有n个人,现在有些人觉得某个人的糖果数不能比自己多多少个,然后问n最多能在让所有人都满意的情况下比1多多少个. 这道题其实就是差分约束题目,根据题中给出的 a 认为 b 不能比 ...

  4. UVA 11478 Halum(用bellman-ford解差分约束)

    对于一个有向带权图,进行一种操作(v,d),对以点v为终点的边的权值-d,对以点v为起点的边的权值+d.现在给出一个有向带权图,为能否经过一系列的(v,d)操作使图上的每一条边的权值为正,若能,求最小 ...

  5. POJ 2983 Is the Information Reliable? 信息可靠吗 (差分约束,spfa)

    题意:有n个站排成一列,针对每个站的位置与距离关系,现有多个约束条件,约束条件分两种:(1)确定的.明确说明站a距离站b多少个单位距离.(2)不确定的.只知道a在b的左边至少1个单位距离.  根据已知 ...

  6. 【HDU3440】House Man (差分约束)

    题目: Description In Fuzhou, there is a crazy super man. He can’t fly, but he could jump from housetop ...

  7. 差分约束算法————洛谷P4878 [USACO05DEC] 布局

    题目: 不难看出题意主要是给出ml+md个格式为xi-xj<=ak的不等式,xi-xj为i,j俩头牛的距离,要我们求x1-xn的最大值. 经过上下加减我们可以将这几个不等式化成x1-xn< ...

  8. 牛客Wannafly9E 组一组 差分约束

    正解:差分约束 解题报告: 传送门! 首先肯定要想到把他们分开来考虑,就是说,把数二进制拆分掉,这样就可以分开考虑了嘛 然后考虑设f[i]:前i个数中的1的个数 然后就可以得到一堆差分约束的式子 然后 ...

  9. ☆ [POJ1021] Intervals 「差分约束」

    传送门 >Here< 题意:给出N段区间,并告诉你每段区间里有几个数(一个位置只能放一个数) 问总共至少有几个数 解题思路 差分约束题,本蒟蒻也是第一次做差分约束题…… 所谓差分约束,常常 ...

随机推荐

  1. 最简单的自定义适配器adapter

    下面是一个非常简单的自定义适配器的总体源码,从这个源码入门,就可以慢慢学会适配器了 适配器的作用: 完成数据和界面控件的绑定,把数据绑定到界面的现实控件条目上(对于listView,应该是listVi ...

  2. LAMP环境部署总结

    linux+apche+mysql+php 此次用到的工具有:/etc/init.d/iptables , selinux, useradd, yum,chkconfig,sshd,visudo,cr ...

  3. iOS中Git的使用

    打开终端: 查看Git的版本的终端命令:git —version 输入:ssh 查看是否已经存在ssh. 如果存在,先将已有的ssh备份,或者将新建的ssh生成到另外的目录下 如果不存在,通过默认的参 ...

  4. Java根据ip地址获取Mac地址,Java获取Mac地址

    Java根据ip地址获取Mac地址,Java获取Mac地址 >>>>>>>>>>>>>>>>>&g ...

  5. minicom移植到ARM开发平台

    minicom需要ncurses库的支持.arm-linux-gcc中并没有此库故需要交叉编译ncurses,否则出现很多头文件.库函数找不到. 软件环境: ncurses-6.0 下载网址:http ...

  6. js--小结⑤

    js中的for循环,while循环,do...while循环和C语言的一模一样 有几个问题要提醒一下的是 1.  null是对象,即object       undefined是undefined d ...

  7. Java-struts2 配置hellow world

    这里进行struts框架的配置问题,和简单的输出hellow world 配置的步骤 1.      配置TomCat 2.      Jak 3.      拷贝struts.xml文件到src目录 ...

  8. ASP.Net IE10+ SCRIPT:XXX_doPostBack 未定义

    问题描述 GridView中分页控件,点击分页无反应,Linkbutton点击无反应,打开Web控制台,发现如下错误:SCRIPTXXX:_doPostBack 未定义:查询后得知,是由于.NET F ...

  9. 关于ASP.Net中路径的问题

    比如你的工程是Webapplication1(url是:http://localhost/webapplication1/webform1.aspx) Request.ApplicationPath ...

  10. (转)C# NameValueCollection集合

    1.NameValueCollection类集合是基于 NameObjectCollectionBase 类. 但与 NameObjectCollectionBase 不同,该类在一个键下存储多个字符 ...