noipxx提高组复赛解题报告

noipxx提高组复赛解题报告

ID:30025988

大小:21.66 KB

页数:14页

时间:2018-12-26

noipxx提高组复赛解题报告_第1页
noipxx提高组复赛解题报告_第2页
noipxx提高组复赛解题报告_第3页
noipxx提高组复赛解题报告_第4页
noipxx提高组复赛解题报告_第5页
资源描述:

《noipxx提高组复赛解题报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划noipXX提高组复赛解题报告  铺地毯  【问题描述】  为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域铺上一些矩形地毯。一共有n张地毯,编号从1到n。现在将这些地毯按照  编号从小到大的顺序平行于坐标轴先后铺设,后铺的地毯覆盖在前面已经铺好的地毯之上。  地毯铺设完成后,组织者想知道覆盖地面某个点的最上面的那张地毯的编号。注意:在矩形  地毯边界和四个顶点上的点也算被地毯覆盖。  【输入】  输入文件名为。  输入共n+2行。  第一行,一个整数n,表示总

2、共有n张地毯。  接下来的n行中,第i+1行表示编号i的地毯的信息,包含四个正整数a,b,g,k,每  两个整数之间用一个空格隔开,分别表示铺设地毯的左下角的坐标以及地毯在x  轴和y轴方向的长度。目的-通过该培训员工可对保安行业有初步了解,并感受到安保行业的发展的巨大潜力,可提升其的专业水平,并确保其在这个行业的安全感。为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划  第n+2行包含两个正整数x和y,表示所求的地面的点的坐标。  【输出】  输出文件名为。  输出共1行,一个整数,表示所求的地毯的编号;若此处没

3、有被地毯覆盖则输出-1。  【输入输出样例】  3  1023  0233  2133  22  3  3  【解题报告】  从后往前扫,找到第一个覆盖这个点的就输出,否则无解。  programcarpet;  usessysutils;  var  n,i,a,b:longint;  x2,x1,y1,y2:array[0..]oflongint;  time:extended;目的-通过该培训员工可对保安行业有初步了解,并感受到安保行业的发展的巨大潜力,可提升其的专业水平,并确保其在这个行业的安全感。为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安

4、保从业人员的业务技能及个人素质的培训计划  proceduremain;  begin  readln(n);  fori:=1tondo  begin  readln(x1[i],y1[i],a,b);  x2[i]:=x1[i]+a;  y2[i]:=y1[i]+b;  end;  readln(a,b);  fori:=ndownto1doif(a=x1[i])and(b>=y1[i])and(bj)  sum[i,j]=sum[i-1,j]+1(color[i]=j)  这里要用O(NK)的复杂度,是算法的瓶颈所在,不过对于题中的数据范围已经足够了。并且具体实现可以先用

5、数组赋值sum[i]=sum[i-1],然后再为  sum[i,color[i]]+1,应该会快很多。  我们还需要解决的问题就是,已知了L,如何快速找到R的可行范围?再次注意区间内必须要存在一个咖啡店最低消费不超过P。目的-通过该培训员工可对保安行业有初步了解,并感受到安保行业的发展的巨大潜力,可提升其的专业水平,并确保其在这个行业的安全感。为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划  因此,如果L就是一个最低消费不超过P的咖啡店,那么R可以取到[L+1,n]中所有色调为color[L]的客栈,即ans=a

6、ns+sum[n,color[L]]-sum[L,color[L]];如果L是一个最低消费超过P的咖啡店,那么我们要找到一个T∈[L+1,n],且咖啡店T的最低消费不超过P,那么R就可以取到[T,n]中所有色调为color[L]的客栈,即ans=ans+sum[n,color[L]]-sum[T-1,color[L]]。  问题是我们如何找到这个T,其实很简单,二分查找即可。再次预设一个数组,保存所有最低消费不超过P的咖啡店序号,二分查找L即可。注意这里L一定不存在这个数组中,因此找到的应该是最靠近L且大于L的序号,细节处理很重要。找不到返回-1,不用累加ans就是了。  ③:

7、O(nlogn)  这个办法比②更优一些。来自Clarkok的做法。  用list[i,j]表示颜色为i的第j个客栈,也就是将客栈按照颜色紧缩存储。另用pos[i]表示第i个旅馆在list[color[i]]中的位置。用线段树/ST算法(推荐)预处理出区间消费的最小值,也就是min{cost[i..j]},易得到min[k,i]是非增的,注意这是后面二分的关键。  然后枚举第二个人,在list[color[i]]中用二分找到一个j满足min[j,i]=r(i),那么第1~r(i)号旅馆中,所

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。