题目大意:

给定n个整数区间[ai,bi]和n个整数ci,求一个最小集合Z,满足|Z∩[ai,bi]|>=ci(Z里边在闭区间[ai,bi]的个数不小于ci)。

多组数据:

n(1<=n<=50000)区间的个数

n行:

ai bi ci(0<=ai<=bi<=50000,1<=ci<=bi-ai+1)

_____________________________________________________

这是一道查分约束题目。

Si为0-i中包含在Z中的个数,固有:

Si-Si-1<=1

Si-Si-1>=0

Sbi-Sai-1>=ci

依照上面不等式,变形并建边。

求的Smax-S0>=x,变形为S0-Smax<=-x,所以求max到0的最短路,就是答案的相反数。

_____________________________________________________

 1 #include<iostream>
 2 #include<algorithm>
 3 #include<cstdio>
 4 #include<cmath>
 5 #include<cstring>
 6 #include<queue>
 7 using namespace std;
 8 int n,maxd;
 9 struct edge
10 {
11     int u,v,w,next;
12 }e[150010];
13 int head[50010],js=0;
14 int dis[50010];
15 bool inq[50010];
16 int inqt[50010];
17 queue<int>q;
18 void init()
19 {
20     js=0;
21     maxd=0;
22     memset(head,0,sizeof(head));
23 }
24 void addage(int u,int v,int w)
25 {
26     e[++js].u=u;e[js].v=v;e[js].w=w;
27     e[js].next=head[u];head[u]=js;
28 }
29 bool spfa()
30 {
31     memset(inq,0,sizeof(inq));
32     memset(dis,0x7f,sizeof(dis));
33     memset(inqt,0,sizeof(inqt));
34     q.push(maxd+1);
35     inq[maxd+1]=1;
36     inqt[maxd+1]=1;
37     dis[maxd+1]=0;
38     while(!q.empty())
39     {
40         int u=q.front();
41         q.pop();
42         inq[u]=0;
43         for(int i=head[u];i;i=e[i].next)
44         {
45             int v=e[i].v;
46             if(dis[v]>dis[u]+e[i].w)
47             {
48                 dis[v]=dis[u]+e[i].w;
49                 if(!inq[v])
50                 {
51                     inq[v]=1;
52                     inqt[v]++;
53                     q.push(v);
54                     if(inqt[v]>50000)return 0;
55                 }
56             }
57         }
58     }
59     return 1;
60 }
61 int main()
62 {
63     while(scanf("%d",&n)==1)
64     {
65         init();
66         for(int a,b,c,i=1;i<=n;i++)
67         {
68             scanf("%d%d%d",&a,&b,&c);
69             if(b>maxd)maxd=b;
70             addage(b+1,a,-c);
71         }
72
73         for(int i=1;i<=maxd+1;i++)
74         {
75             addage(i-1,i,1);
76             addage(i,i-1,0);
77         }
78         if(spfa())printf("%d\n",-dis[0]);
79     }
80     return 0;
81 }

View Code

转载于:https://www.cnblogs.com/gryzy/p/6212196.html

POJ1201 区间相关推荐

  1. POJ-1201 Intervals---差分约束

    题目链接: https://vjudge.net/problem/POJ-1201 题目大意: 一个整数集合Z有n个区间,每个区间有3个值,ai,bi,ci代表,在区间[ai,bi]上至少有ci个整数 ...

  2. Redis 笔记(04)— list类型(作为消息队列使用、在列表头部添加元素、尾部删除元素、查看列表长度、遍历指定列表区间元素、获取指定区间列表元素、阻塞式获取列表元素)

    Redis 的列表是链表而不是数组.这意味着 list 的插入和删除操作非常快,时间复杂度为 O(1),但是索引定位很慢,时间复杂度为 O(n). 当列表弹出了最后一个元素之后,该数据结构自动被删除, ...

  3. LeetCode简单题之汇总区间

    题目 给定一个 无重复元素 的 有序 整数数组 nums . 返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 .也就是说,nums 的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范 ...

  4. FhqTreap的区间翻转

    学 Fhq 就是为了尽量不去写某毒瘤数据结构,所以自然要来杠一杠某数据结构的经典操作:区间反转 听起来玄乎,但只需要一个小 trick 就行了:把原来的区间以下标作为权值建成 Treap , 这样整棵 ...

  5. 【基本操作】主席数统计区间不同颜色个数

    例题:询问 $n$ 个数中无修改的区间不同数个数,不带修改(SPOJ的一道题). 方法1:直接删 我们尝试头铁地开正常的下标主席树! 依次插入 $n$ 个数,插入第 $i$ 个数时,我们只要在把第 $ ...

  6. 【题解】BZOJ 3065: 带插入区间K小值——替罪羊树套线段树

    题目传送门 题解 orz vfk的题解 3065: 带插入区间K小值 系列题解 一 二 三 四 惨 一开始用了一种空间常数很大的方法,每次重构的时候merge两颗线段树,然后无限RE(其实是MLE). ...

  7. hdu 2665(主席树查询区间k大值)

    先贴我自己写的代码做模板虽然跟原博主没什么两样.(一开始空间开的4*maxn,交到hdu上一直TLE很奇怪) #include<bits/stdc++.h> using namespace ...

  8. mysql 数字区间_币投君0904丨数字货币暴跌原因何在

    昨日数字货币再次集体闪崩,btc甚至刺穿10000大关,合约帝数据显示,过去 24 小时全网爆仓超过 10 亿美元,共有 6.7 万人成为爆仓受害者.究其原因主要有两个方面:一方面是昨晚美股暴跌,三大 ...

  9. Awcing算法---区间合并

    #include <iostream> #include <algorithm> #include <vector> using namespace std; ty ...

最新文章

  1. 计算机视觉算法——Transformer学习笔记
  2. 全面剖析支付宝服务窗功能二次开发
  3. GitHub vs. Bitbucket 不只是功能不同
  4. 前端如何实现音乐盒胶盘的转动_郑州Web前端入门教程之如何实现图片优化?
  5. android viewpager fragment传值,Android开发中如何解决Fragment +Viewpager滑动页面重复加载的问题...
  6. 广州电子厂房净化工程_简述设计电子车间净化工程的注意要点
  7. 仿英雄联盟比赛直播网页模板
  8. 随想录(一个android原生app的代码赏析)
  9. 安卓-内部存储、外部存储目录
  10. (2020)Java后端开发----(面试题和笔试题)
  11. miniprograme-wsx
  12. 快速卸载软件和残余,很Nice的一款卸载工具—Your Unin-staller!
  13. 参与百度世界2012 赢百度APP推广大礼包
  14. DDR SDRAM内存测试的一种官方方案(简单易懂)
  15. 计算机组成原理-存储器的层次结构
  16. Android虚拟按键的适配
  17. 使用 this.$parent 子组件调用父组件方法
  18. Andriod 电池检测NTC电阻值的软件设定
  19. android 跑马灯 竖线,专为电竞和内容创作者而生!体验惠普 ENVY TE01台式机
  20. 水库安全监测自动化系统解决方案

热门文章

  1. else 策略模式去掉if_如何用卫语句、策略模式、状态模式重构if-else语句
  2. C语言“悬空指针”和“野指针”究竟是什么意思?
  3. delphi报列表索引越界怎么处理_图解Elasticsearch索引机制,此篇带你领悟新世界...
  4. python中mean的用法_Python statistics mean()用法及代码示例
  5. 用python找对象_还在单身的你 Python教你如何脱单
  6. pat 乙级 1010 一元多项式求导(C++)
  7. 工业级以太网交换机具有哪些优越特性
  8. 工业级千兆以太网光纤收发器产品介绍
  9. 【渝粤教育】广东开放大学 机械制造基础 形成性考核 (55)
  10. 电源模块低温和高温工作会造成什么后果?