【题解】自行车比赛 \([AHOI2016]\) \([P2777]\)

逼自己每天一道模拟题

传送门:自行车比赛 \([AHOI2016]\) \([P2777]\)

【题目描述】

比赛中一共有 \(N\) 位选手,每天第一名的选手会获得 \(N\) 点积分,第二名会获得 \(N-1\) 点积分,第三名会获得 \(N-2\) 点积分,依次类推,最后一名会获得 \(1\) 点积分。保证没有选手会排名相同。

在之前的数日较量中, \(N\) 位选手已经有了一些积分。现在即将开始的是最后一天的比赛。小雪想知道有多少位选手有可能获得最终的冠军,也就是说还有多少选手有可能通过最后一天的比赛获得累计总分第一名。

【输入】

第一行输入一个整数 \(N\),表示参赛选手总数。

之后 \(N\) 行,其中第 \(i\) 行输入一个整数 \(B[i]\) 表示第 \(i\) 位选手已经获得的累计积分。

【输出】

输出一个整数表示有多少位选手有可能获得最终的冠军。

【样例 \(1\)】

样例输入:
3
8
10
9 样例输出:
3

【样例 \(2\)】

样例输入:
5
15
14
15
12
14 样例输出:
4

【数据范围】

\(100\%\) \(3 \leqslant N \leqslant 3e5\) \(,\) \(0 \leqslant b[i] \leqslant 2e6\)


【分析】

排个序先?

如果想让一个人获得冠军,那么最后一天让他拿最高分时,他得冠军的可能性是最大的,不妨设其为最高分,而其他人中基础分比他低的肯定抢不到冠军了,重点就是基础分比他高的看能不能抢到。

设最后一天基础分高的拿低分,低基础低的拿高分,然后看他们当中的最大值是否大于我们想要供为冠军的这个人的总分,如果大于则直接尝试供下一个,如果小于则 \(++ans\)。

来看看第二个样例:

排序后变成了酱紫:

假如要供第一个人,对应起来并计算总分:

发现第二个人总分比他高,跳过,供下一个人。如果想供第二个人,那么第一个随便给他什么分数都无所谓,而后面这三个人要尽量给小一点的分数即 \(1,2,3\),因此对应下来就是:

发现后面的逗比第二个人小,所以供奉成功。

以此类推,发现任意一人在供奉到他之前,始终都是那一个不改变的总分,于是可以用一个数组 \(f[\) \(]\) 来提前预处理出每个人后面的人的总分最大值,当要供奉某人 \(i\) 的时候直接用 \(f[i]\) 与 \(a[i]+n\) 比较一下大小并统计答案即可。

【Code】

#include<algorithm>
#include<cstdio>
#define Re register int
using namespace std;
const int N=3e5+3;
int n,ans,a[N],Q[N],f[N];
inline void in(Re &x){
int fu=0;x=0;char c=getchar();
while(c<'0'||c>'9')fu|=c=='-',c=getchar();
while(c>='0'&&c<='9')x=(x<<1)+(x<<3)+(c^48),c=getchar();
x=fu?-x:x;
}
int main(){
in(n);
for(Re i=1;i<=n;++i)in(a[i]);
sort(a+1,a+n+1);
for(Re i=n;i>=1;--i)Q[i]=a[i]+n-i+1;
f[n]=-1e9;
for(Re i=n-1;i>=1;--i)f[i]=max(f[i+1],Q[i+1]);
for(Re i=1;i<=n;++i)ans+=f[i]<=a[i]+n;
printf("%d",ans);
}

【题解】自行车比赛 [AHOI2016] [P2777]的更多相关文章

  1. 洛谷 P2777 [AHOI2016初中组]自行车比赛

    题目描述 小雪非常关注自行车比赛,尤其是环滨湖自行车赛.一年一度的环滨湖自行车赛,需要选手们连续比赛数日,最终按照累计得分决出冠军.今年一共有 N 位参赛选手.每一天的比赛总会决出当日的排名,第一名的 ...

  2. [AHOI 2016初中组]自行车比赛

    Description 小雪非常关注自行车比赛,尤其是环滨湖自行车赛.一年一度的环滨湖自行车赛,需要选手们连续比赛数日,最终按照累计得分决出冠军.今年一共有 N 位参赛选手.每一天的比赛总会决出当日的 ...

  3. 洛谷P2777 [AHOI2016初中组]自行车比赛

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...

  4. 洛谷 2777 [AHOI2016初中组]自行车比赛

    [题解] 为了让某个选手能够获得总分第一,就让他最后一天的得分是n,并且让别的选手的得分的最大值尽量小.于是我们先把目前积分排序,并且让他们最后一天的排名刚好与积分排名相反.即某个积分排名为X的人最后 ...

  5. [比赛题解]CWOI2019-1

    [比赛题解]CWOI2019-1 比赛日期:2019.10.12 T1 一道神仙DP题. 我们考虑\(dp[i][j][k]\)表示最后\(i\)位数,\(i-1\)位都是9,最后一位为\(j\),最 ...

  6. 洛谷 U14472 数据结构【比赛】 【差分数组 + 前缀和】

    题目描述 蒟蒻Edt把这个问题交给了你 ---- 一个精通数据结构的大犇,由于是第一题,这个题没那么难.. edt 现在对于题目进行了如下的简化: 最开始的数组每个元素都是0 给出nnn,optopt ...

  7. Codeforces Round #532 (Div. 2) 题解

    Codeforces Round #532 (Div. 2) 题目总链接:https://codeforces.com/contest/1100 A. Roman and Browser 题意: 给出 ...

  8. 四川大学第二届SCUACM新生赛(同步赛)题解

    周末没事干,就不要脸地去一边吃饭一边看学弟沈阳拿银一边水了个比赛,水都水了,简单写个题解. 比赛链接 A,丁姐姐喜欢Fibonacci.签到1,斐波那契%3 1 1 0 1 1 0 1 1 0..., ...

  9. 惊艳!9个不可思议的 HTML5 Canvas 应用试验

    HTML5 <canvas> 元素给网页中的视觉展示带来了革命性的变化.Canvas 能够实现各种让人惊叹的视觉效果和高效的动画,在这以前是需要 Flash 支持或者 JavaScript ...

随机推荐

  1. poj 1752 Advertisement (差分约束)

    题目大意:题目大意:有n个人在一条路上跑步,广告商准备在这条路上设置广告牌,假设这条路上每一个点有一个广告牌 现在已知这n个人从Ai开始跑,到Bi结束,那么他可以看到max(Ai,Bi)-min(Ai ...

  2. 【转】Intellij IDEA 快捷键大全

    IntelliJ Idea 常用快捷键列表 Ctrl+Shift + Enter,语句完成“!”,否定完成,输入表达式时按 “!”键Ctrl+E,最近的文件Ctrl+Shift+E,最近更改的文件Sh ...

  3. 牛客网小白月赛1 B,I

    #include <stdio.h> #include <math.h> #include <string.h> #include <stdlib.h> ...

  4. 51nod 1126 求递推序列的第N项 && hdu - 1005 Number Sequence (求周期)

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1126 http://acm.hdu.edu.cn/showproblem ...

  5. CLR GC

    一.垃圾回收算法 每个应用程序都包含一组根(root),每个根都是一个存储位置,他要么为null,要么指向托管堆的一个对象,类型中定义的静态字段.局部变量.方法参数等都会被认为是根. 垃圾回收器(GC ...

  6. Ubuntu 16.04安装Ubuntu After Install工具实现常用软件批量安装

    这个软件集成了常用且好用的软件,且只需要选择需要的软件之后自动安装好,不需要额外设置. 安装: sudo add-apt-repository ppa:thefanclub/ubuntu-after- ...

  7. E-SATA接口

    1.VGA接口 VGA接口就是显卡上输出模拟信号的接口,也叫D-Sub接口,其实就是显示转移的接口,比如连接投影仪.连接电视等等.从外观上讲,VGA接口是一种D型接口,上面共有15针空,分成三排,每排 ...

  8. js获取上传的文件名称

    <input name="file_" type="file" id="file_" size="100" /&g ...

  9. pkill有的时候并不能杀死进程?

    pkill的用法:http://man.linuxde.net/pkill 根据进程命令行,杀死进程 如下intellij.go代码为一个代理服务器,把本地请求转向一个代理 package main ...

  10. ArcGIS Python 编码问题

    吐槽一下ArcGIS自带的 Python IDE, 没有代码补全 没有函数提示 没有代码折叠 没有行号 撤销操作还有问题 字符编码还有各种问题 .........   花了2天时间才琢磨出来的经验 环 ...