题目描述
给定n个闭区间[ai,bi]和n个整数ci。你需要构造一个整数集合Z,使得对于任意i,Z中满足ai<=x<=bi的x不少于ci个。求Z集合中包含的元素个数的最小值。 
输入
第一行为一个整数n(1<=n<=50000) 
接下来n行每行描述一个区间,三个整数分别表示ai,bi和ci。( 0 <= ai <= bi <= 50000 并且 1 <= ci <= bi - ai+1.) 
输出
输出一个整数,表示Z中包含元素个数的最小值。
样例输入
5
3 7 3
8 10 3
6 8 1
1 3 1
10 11 1
样例输出
6

由题意我们可以知道
b[i]-a[i]+1>=c[i]
两边同时除以-1,
a[i]-1-b[i]<=-c[i]
a[i]<=(b[i]+1)+(-c[i])
这个式子很熟悉有没有?
如果没有,看这个
d[i]<=d[j]+edge(j,i)
记得这个吗?对于一个无法松弛的单源最短路图,必满足上述关系

所以我们在最短路中把(j,i)连边 在本题中将(b[i]+1,a[i])连边 该过程称为差分约束
用d[i]表示从0-i区间中需要选的数
但是应当注意的是 明显d[0]不一定=0 所以我们需要一个虚拟点作为原点
怎样找这个虚拟点?因为前面有一个(b[i]+1),当b[i]=max(b[i])时该值最大 所以最短路应当以max(b[i])为原点进行
由题意,在i至i+1区间中,最多选1个数,最少选0个数
于是得到0<=d[i+1]-d[i]<=1 所以同理我们将(i,i-1,0,)以及(i-1,i,1)连边
最后算出d[max(b[i])]即可
上代码
#include<iostream>
#include<queue>
#include<cstring>
using namespace std;
int n,head[],num,a[],b[],c[],d[],vst[];
struct edge
{
int u,v,c,nxt;
}e[];
void add(int u,int v,int c)
{
e[++num].u=u,e[num].v=v,e[num].c=c;
e[num].nxt=head[u],head[u]=num;
}
void spfa(int x)
{
queue<int> q;
memset(d,,sizeof d);
q.push(x);
d[x]=;
vst[x]=;
while(!q.empty())
{
int xx=q.front();
q.pop();
vst[xx]=;
for(int st=head[xx];st!=-;st=e[st].nxt)
{
if(d[e[st].v]>e[st].c+d[xx])
{
d[e[st].v]=e[st].c+d[xx];
if(!vst[e[st].v])q.push(e[st].v),vst[e[st].v]=;
}
}
}
}
int main()
{
// freopen("in.txt","r",stdin);
// freopen("out.txt","w",stdout);
memset(head,-,sizeof head);
scanf("%d",&n);
int m=-0x3f3f3f3f;
for(int i=;i<=n;i++)
{
scanf("%d%d%d",&a[i],&b[i],&c[i]);
add(b[i]+,a[i],-c[i]);
m=max(m,b[i]+);
}
for(int i=;i<=m;i++)
{
add(i,i-,);
add(i-,i,);
}
// for(int i=1;i<=m;i++)
// add(50005,i,0);
// for(int i=1;i<=num;i++)
// printf("%d %d\n",e[i].u,e[i].v);
spfa(m);
int minn=0x3f3f3f3f;
//for(int i=1;i<=m;i++)minn=min(minn,d[i]);
printf("%d",-d[]/*-minn*/);
return ;
}

 

2019暑假集训 Intervals的更多相关文章

  1. 2019暑假集训 BLO

    题目描述 Byteotia城市有n个 towns m条双向roads. 每条 road 连接 两个不同的 towns ,没有重复的road. 所有towns连通. 输入 输入n<=100000 ...

  2. 2019暑假集训 windy数

    题目描述 Windy 定义了一种 Windy 数:不含前导零且相邻两个数字之差至少为2的正整数被称为 Windy 数. Windy 想知道,在A和B之间,包括A和B,总共有多少个 Windy 数? 输 ...

  3. 2015UESTC 暑假集训总结

    day1: 考微观经济学去了…… day2: 一开始就看了看一道题目最短的B题,拍了半小时交了上去wa了 感觉自己一定是自己想错了,于是去拍大家都过的A题,十分钟拍完交上去就A了 然后B题写了一发暴力 ...

  4. STL 入门 (17 暑假集训第一周)

    快速全排列的函数 头文件<algorithm> next_permutation(a,a+n) ---------------------------------------------- ...

  5. 暑假集训Day2 互不侵犯(状压dp)

    这又是个状压dp (大型自闭现场) 题目大意: 在N*N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子. ...

  6. 暑假集训Day1 整数划分

    题目大意: 如何把一个正整数N(N长度<20)划分为M(M>=1)个部分,使这M个部分的乘积最大.N.M从键盘输入,输出最大值及一种划分方式. 输入格式: 第一行一个正整数T(T<= ...

  7. 2013ACM暑假集训总结-致将走上大三征途的我

    回想起这个暑假,从开始与雄鹰一起的纠结要不要进集训队,与吉吉博博组队参加地大邀请赛,害怕进不了集训队.当时激励我月份开始接触的,记得当时在弄运动会来着,然后就问了雄鹰一些输入输出的东西,怀着满心的期待 ...

  8. [补档]暑假集训D5总结

    %dalao 今天又有dalao来讲课,讲的是网络流 网络流--从入门到放弃:7-29dalao讲课笔记--https://hzoi-mafia.github.io/2017/07/29/27/   ...

  9. [补档]暑假集训D1总结

    归来 今天就这样回来了,虽然心里极其不想回来(暑假!@#的只有一天啊喂),但还是回来了,没办法,虽然不喜欢这个地方,但是机房却也是少数能给我安慰的地方,心再累,也没有办法了,不如好好集训= = %da ...

随机推荐

  1. SynchronizationContext笔记

    SynchronizationContext 类是一个基类,可提供不带同步的自由线程上下文. 此类实现的同步模型的目的是使公共语言运行库内部的异步/同步操作能够针对不同的异步模型采取正确的行为.此模型 ...

  2. Android零基础入门第1节:Android的前世今生

    原文:Android零基础入门第1节:Android的前世今生 现在网上有很多各色Android资料了,但相对来说还是比较零散,Android覆盖的范围极广,最近刚好有机会全部拉通整理一遍,也保存起来 ...

  3. 动态加载XAML

    string FadeInStoryBoard = "<StoryBoard ... />"; StoryBoard storyBoard = XamlReader.L ...

  4. Tensorflow-常见报错解决方案

    1. AttributeError: 'module' object has no attribute 'SummaryWriter' tf.train.SummaryWriter 改为:tf.sum ...

  5. GO :互联网时代的 C 语言!

    摘要: 每周为您推送最有价值的开源技术内参! 技术干货 标签:独家译文 1.Go 很好,为什么我们不使用它? 在这篇文章中,我将分享一下为什么我认为它很棒,使用它的一些缺点,以及为什么它还不是我们 Z ...

  6. vs2008在win7系统中安装不问题

    据说是office软件冲突问题. 解决方案是卸载了office软件,不管是2007还是其它版本,先安装vs2008,再安装其它的.

  7. git(一)

    一.邮件的格式 抄送:需要知道这件事的人 内容: 大家好: 我是xxx,附件内容是我的简历,请查收,有问题可以随时联系我susun|开发工程师电话:1231xxxxx31地址:xxxxxx联系电话(公 ...

  8. 七、Linux磁盘管理及LVM讲解

      1.硬盘接口 IDE:家用产品,也部分应用于服务器 SATA:一般使用 SCSI:服务器市场 SAS:高端服务器上,价格昂贵  2.硬盘种类 SATA硬盘: SCSI硬盘: SAS硬盘: 3.分区 ...

  9. 对shell脚本进行加密

    用shell脚本对系统进行自动化维护,简单,便捷而且可移植性好.但shell脚本是可读写的,很有可能会泄露敏感信息,如用户名,密码,路径,IP等.同样,在shell脚本运行时会也泄露敏感信息.请问如何 ...

  10. 05-MySQL的完整性约束

    1.整体说明(1)讨论重点内容    not null 与default    unique:表中该值唯一,不能有重复值    primary    auto_increment    foreign ...