- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
【差分约束】IntegerIntervals(整数区间)
【差分约束】Integer Intervals(整数区间)
Time Limit:1000MS? Memory Limit:65536KTotal Submit:7 Accepted:3
Description
整数区间(intervals.pas/c/cpp) 【问题描述】 一个整数区间[a,b],a写一个程序是:求一个点集,使得每个区间都至少有2个整数在这个点集里面,问这个点集最少有几个点。
Input
第一行包含区间总数n,1 = n = 10000。接下来n行,每行包含两个整数a、b,用一个空格隔开,0 = a b = 10000,表示区间的范围。
Output
输出一个整数,表示包含每个区间至少有两个不同整数的点集的最少点数量。
Sample Input
4
3 6
2 4
0 2
4 7
Sample Output
4
Source
CEOI 1997
大致题意:
给出数轴上的n个区间,每个区间都是连续的int区间。
现在要在数轴上任意取一堆元素,构成一个元素集合V
要求每个区间和元素集合V的交集至少有两个不同的元素
求集合V最小的元素个数。
?
解题思路:
一、贪心算法
先对所有区间按末端点排序
取第i个区间的最后两个元素Selem和Eelem若第i+1个区间包含了这两个元素,则跳到下一个区间所取的元素个数+0
若第i+1个区间只包含了这两个元素中的一个(由于有序,所以必定是包含Eelem),则取第i+1个区间的最后一个元素,所取的元素个数+1。为了方便下一区间的比较,更新Selem和Eelem的值,使他们为当前V集合中最后的两个元素。(*[*)]
若第i+1个区间没有包含这两个元素,则第i+1个区间的最后两个元素,所取的元素个数+2。为了方便下一区间的比较,更新Selem和Eelem的值,使他们为当前V集合中最后的两个元素。 (*) []
?
Selem初始化为第一个区间的最后倒数第2个元素
Eelem初始化为第一个区间的最后的元素
所取的元素个数初始化为2 (就是Selem和Eelem)
?
二、差分约束+Relax
设s[x] = 从0 到x 的所有在集合中的数的个数
则ai到bi的个数即S[bi] - S[ai-1]。因此有
(1) S[bi] - S[ai-1] = 2。
又根据s[x]本身的性质,后面的一定不比前面的小,后面的最多比前面多一,有:(2) ?s[i + 1] - s[i] = 0 (3) ?s[i + 1] - s[i] = 1故建图,使图中每一组边,均满足(注意三条式子的不等号方向要一致,这个很重要):S[ai - 1] = S[bi] - 2 S[i] = S[i - 1] + 1 S[i - 1] = S[i]
上面三式,可把s[x]看作源点(假设存在)到各点的最短距离,初始化为0;
常数为边(ai – 1,bi)的边权
当存在不满足这三条式子的边时,对这条边进行Relax操作,更新不等号左边的变量。
其实就是Bellman-Ford算法的核心部分
if( S[ai - 1] S[bi] – 2 )?? S[ai - 1] = S[bi] – 2 ;
if( S[i] S[i - 1] + 1 )?? S[i] S[i - 1] + 1 ;
if( S[i - 1] S[i] )?? S[i - 1] = S[i] ;
?
最后源点到最大顶点的距离减去源点到最小顶点的距离就是所求(其实一个单位距离就代表V中的一个元素;最小顶点到最大顶点其实就是所有输入的区间中,最小的左端点到最大的右端点这个范围)。
Const {贪心}
maxn=10000;
var n,ans:integer;
a:array[1..maxn,1..2] of integer;
procedure qsort(l,r:integer);
var i,j,mid,mid2:integer;
t:array[1..2] of integer;
begin
if lr then begin
i:=l; j:=r;
mid:=a[(l+r) shr 1,2]; mid2:=a[(l+r) shr 1,1];
repeat
while (a[i,2]mid) or ((a[i,2]=mid) and (a[i,1]mid2)) do inc(i);
while (a[j,2]mid) or ((a[j,2]=mid) and (a[j,1]mid2)) do dec(j);
if i=j then begin
t:=a[i]; a[i]:=a[j]; a[j]:=t
您可能关注的文档
- 《通信原理》第四章信道.doc
- 《通信技术基础》课程复习重点.doc
- 《速成意大利语》第六课+今天晚上有我在家.doc
- 《采煤机司机》.doc
- 《逻辑学》教学大纲.doc
- 《金属切削机床》复习思考题.doc
- 《钳工装配工艺》(技师)备课笔记第二章.doc
- 《钢筋混凝土结构课程设计》.doc
- 《面向对象程序设计》实验指导书.doc
- 《英语语言学》综合习题集胡壮麟版word打印版.doc
- 【导学案】年高中物理人教版必修二教师用书生活中的圆周运动.doc
- 【广东专用】届高考英语一轮复习课时作业(二十一)[必修UnitGreatscientists].doc
- 【年天津中考英语学科考生必备复习资料】中考英语试题分类汇编词汇运用.doc
- 【广东】版高中英语全程复习方略素能提升演练(三)必修Unit(人教版).doc
- 【强烈推荐】万全英语资料爽歪了[].doc
- 【志鸿优化设计】届高考英语一轮复习ModuleLifeintheFuture外研版必修.doc
- 【德州市一模】山东省德州市届高三月模拟检测英语Word版含答案.doc
- 【志鸿优化设计】届高考英语一轮复习ModulesDeepSouth&TheRenaissance外研版选修.doc
- 【工学】机械设计课程设计共(页).doc
- 【常识判断】国家公务员考试行测政治常识考点整理.docx
最近下载
- 2024年10月27日云南昭通市事业单位选调笔试真题及答案解析.doc VIP
- 讲义总结岩土工程勘察讲义.ppt VIP
- 非常规油气勘探开发地质风险评估.pdf
- 中职 图形图像处理(Photoshop CS5)PS(第7章)教学课件 高教版.ppt VIP
- 市政道路监理规划-范本.pdf VIP
- 2025海南省通信网络技术保障中心招聘事业编制人员12人(第1号)笔试模拟试题及答案解析.docx VIP
- 《飞机上应急医疗》课件——心肺复苏的流程.pptx VIP
- 中职 图形图像处理(Photoshop CS5)PS(第6章)教学课件 高教版.ppt VIP
- 抖音直播社区公约.pdf VIP
- 地质灾害治理工程施工技术规范 DB50_T 989-2020 重庆.pdf VIP
文档评论(0)