loj10087
Southwestern Europe 2002,题面可参考 POJ 1201。
给定 n 个闭区间 [a_i,b_i] 和 n 个整数c_i 。你需要构造一个整数集合Z ,使得对于任意i (1<=i<=n),Z 中满足 a_i<=x<=b_i 的整数 x 不少于 c_i 个,求这样的整数集合 Z 最少包含多少个数。
简而言之就是,从 0~5E4 中选出尽量少的整数,使每个区间 [a_i,b_i] 内都有至少 c_i 个数被选出。
第一行一个整数 n,表示区间个数;
以下 n 行每行描述这些区间,第 i+1 行三个整数 a_i,b_i,c_i,由空格隔开。
一行,输出满足要求的序列最少整数个数。
对于全部数据,1<=n<=5e4,0<=a_i,b_i<=5e4。
______________________________________
区间型差分约束
________________________________________


1 #include<bits/stdc++.h>
2 using namespace std;
3 const int maxn=5e4+10;
4 struct edge
5 {
6 int u,v,w,nxt;
7 }e[maxn<<2];
8 int head[maxn],js;
9 void addage(int u,int v,int w)
10 {
11 e[++js].u=u,e[js].v=v;e[js].w=w;
12 e[js].nxt=head[u];head[u]=js;
13 }
14 int n;
15 int dis[maxn];
16 bool inq[maxn];
17 deque<int>q;
18
19 int spfa(int u)
20 {
21 q.push_back(u);
22 memset(dis,0xff,sizeof dis);
23 inq[u]=1;
24 dis[u]=0;
25 while(!q.empty())
26 {
27 int u=q.front();q.pop_front();
28 inq[u]=0;
29 for(int i=head[u];i;i=e[i].nxt)
30 {
31 int w=e[i].w,v=e[i].v;
32 if(dis[u]+w>dis[v])
33 {
34 dis[v]=dis[u]+w;
35 if(!inq[v])
36 {
37 if(!q.empty() && dis[q.front()]<dis[v])q.push_front(v);
38 else q.push_back(v);
39 inq[v]=1;
40 }
41 }
42 }
43 }
44 return dis[50001];
45 }
46 int main()
47 {
48 scanf("%d",&n);
49 for(int a,b,c,i=0;i<n;++i)
50 {
51 scanf("%d%d%d",&a,&b,&c);
52 addage(a,b+1,c);
53 }
54 for(int i=1;i<=50001;++i)
55 {
56 addage(i-1,i,0);
57 addage(i,i-1,-1);
58 }
59 cout<<spfa(0);
60
61 return 0;
62 }
loj10087的更多相关文章
- loj10087 Intervals
传送门 分析 我们设S[i]表示到第i个数为止一共有多少个数在集合Z之中,最终答案就是S[max]-S[min]的最小值.所以我们不难发现对于每一个[ai,bi]都表示S[bi]-S[ai-1]> ...
随机推荐
- Spring Boot面试杀手锏————自动配置原理
转:https://blog.csdn.net/u014745069/article/details/83820511 引言不论在工作中,亦或是求职面试,Spring Boot已经成为我们必知必会的技 ...
- python对离散数据进行编码
机器学习中会遇到一些离散型数据,无法带入模型进行训练,所以要对其进行编码,常用的编码方式有两种: 1.特征不具备大小意义的直接独热编码(one-hot encoding) 2.特征有大小意义的采用映射 ...
- [LeetCode]Minimum Moves to Equal Array Elements1,2
1.将每次n-1个数+1,转化为每次最大的数-1 public int minMoves(int[] nums) { /* 看了看答案 ,很巧妙,最后的结果肯定是把数组元素都加到一个相同的值, 也就是 ...
- Js HTML DOM动画
基础页面 为了演示如何通过 JavaScript 来创建 html 动画,我们将使用一张简单的网页: 实例 我的第一部 JavaScript 动画 我的动画在这里. 创建动画容器 所有动画都应该与容器 ...
- python图片的读取保存
#coding:utf-8 from PIL import Image import matplotlib.pyplot as plt img=Image.open("F:\\Upan\\源 ...
- 数据库索引的基石----B树
数据结构相对来说比较枯燥, 我尽量用最易懂的话,来把B树讲清楚.学过数据结构的人都接触过一个概念二叉树,简单来说,就是每个父节点最多有两个子节点.为了在二叉树上更快的进行元素的查找,人们通过不断的改进 ...
- Liunx运维(十)-网络管理命令
文档目录: 一.ifconfig:配置或显示网络接口信息 二.ifup:激活网络接口 三.ifdown:禁用网络接口 四.route:显示或管理理由表 五.arp:管理系统的arp缓存 六.ip:网络 ...
- TeamView WaitforConnectFailed错误原因
更新到最新版本并重启如下服务 检查TCP IPV4是否选中
- Solon rpc 之 SocketD 协议 - RPC鉴权模式
Solon rpc 之 SocketD 协议系列 Solon rpc 之 SocketD 协议 - 概述 Solon rpc 之 SocketD 协议 - 消息上报模式 Solon rpc 之 Soc ...
- new ArrayList(0) 和 new ArrayList() 和一样吗?
第一感觉是一样的,盲猜后者调用了前者,并传入参数 0.然而,无论是 JDK 7 还是 JDK 8,这两个方法构造的结果都是不一样的.JDK 开发人员在这方面作了优化. JDK 7 在 Java 7 中 ...