自行车比赛(AHOI2016初中组T1)
2016-12-31 07:41
183 查看
【题目描述】
小雪非常关注自行车比赛,尤其是环滨湖自行车赛。一年一度的环滨湖自行车赛,需要选手们连续比赛数日,最终按照累计得分决出冠军。今年一共有 N 位参赛选手。每一天的比赛总会决出当日的排名,第一名的选手会获得 N 点得分,第二名会获得 N-1 点得分,第三名会获得 N-2 点得分,依次类推,最后一名会获得 1 点得分。保证没有选手会排名相同。
在之前的数日较量中, N 位选手已经分别累计了一些分数。现在即将开始的是最后一天的比赛。小雪希望知道有多少位选手还有可能获得最终的冠军,也就是说还有多少选手有可能通过最后一天的比赛获得累计总分第一名。
【输入格式】
第一行输入一个整数 N,表示参赛选手总数,保证 3<=N<=300000。
之后 N 行,其中第 i 行输入一个整数 B[i]表示第 i 位选手已经获得的累计分数,满足0<=B[i]<=2000000。
【输出格式】
输出只有一行,只输出一个整数,表示有多少位选手有可能获得最终的冠军。
【样例输入】
3
8
10
9
【样例输出】
3
【数据范围】
3<=N<=300000 且 0<=B[i]<=2000000。
【分析】
单调队列模拟下就好。
小雪非常关注自行车比赛,尤其是环滨湖自行车赛。一年一度的环滨湖自行车赛,需要选手们连续比赛数日,最终按照累计得分决出冠军。今年一共有 N 位参赛选手。每一天的比赛总会决出当日的排名,第一名的选手会获得 N 点得分,第二名会获得 N-1 点得分,第三名会获得 N-2 点得分,依次类推,最后一名会获得 1 点得分。保证没有选手会排名相同。
在之前的数日较量中, N 位选手已经分别累计了一些分数。现在即将开始的是最后一天的比赛。小雪希望知道有多少位选手还有可能获得最终的冠军,也就是说还有多少选手有可能通过最后一天的比赛获得累计总分第一名。
【输入格式】
第一行输入一个整数 N,表示参赛选手总数,保证 3<=N<=300000。
之后 N 行,其中第 i 行输入一个整数 B[i]表示第 i 位选手已经获得的累计分数,满足0<=B[i]<=2000000。
【输出格式】
输出只有一行,只输出一个整数,表示有多少位选手有可能获得最终的冠军。
【样例输入】
3
8
10
9
【样例输出】
3
【数据范围】
3<=N<=300000 且 0<=B[i]<=2000000。
【分析】
单调队列模拟下就好。
var i,n,p,q:longint; a:array[0..300001]of longint; procedure qsort(l,r:longint); var i,j,mid,tmp:longint; begin i:=l;j:=r; mid:=a[(l+r) div 2]; repeat while a[i]<mid do inc(i); while a[j]>mid do dec(j); if i<=j then begin tmp:=a[i];a[i]:=a[j];a[j]:=tmp; inc(i);dec(j); end; until i>j; if l<j then qsort(l,j); if i<r then qsort(i,r); end; begin readln(n); for i:=1 to n do readln(a[i]); qsort(1,n); a[0]:=maxlongint; q:=n; for p:=1 to n-1 do begin while a[q]+n-q+1<=a[p]+n do dec(q); if q<p then break; end; write(n-p+1); end.
相关文章推荐
- FragmentManager在Activity重建后,add的fragment消失,救命
- 3667: Rabin-Miller算法
- AsyncHttpClient RequestParams怎么封装下面格式的json
- ZCMU-1315-孙子算经
- android 仿qq电话的推送是怎么实现的,还请那位大牛,提供点参考资料或思路
- Fragment跳到另一个Fragment
- codeforces 750D New Year and Fireworks(bfs or dfs)
- 打包debug版本的apk会混淆吗
- 需要做一个IP Carema 的安卓端!~求思路
- 关于storyBoard里的间距的问题
- NESTED LOOPS HASH JOIN
- 2016年度学习总结
- Leetcode 48. Rotate Image
- uri与url的区别
- 如何获取点击屏幕的位置
- linux下搭建sdk,为什么我的工具这么少?
- Android 图片 剪切 大小无法控制,
- oracle执行计划中NESTED LOOPS SEMI (即半嵌套循环)的解释
- android怎么录制SurfaceView中的图像?
- Oracle 执行计划(Explain Plan) 说明