【AHOI 2016初中组】 自行车比赛 - 贪心
題目描述
小雪非常關注自行車比賽,尤其是環濱湖自行車賽。一年一度的環濱湖自行車賽,需要選手們連續比賽數日,最終按照累計得分決出冠軍。今年一共有 N 位參賽選手。每一天的比賽總會決出當日的排名,第一名的選手會獲得 N 點得分,第二名會獲得 N-1 點得分,第三名會獲得 N-2 點得分,依次類推,最后一名會獲得 1 點得分。保證沒有選手會排名相同。
在之前的數日較量中, N 位選手已經分別累計了一些分數。現在即將開始的是最后一天的比賽。小雪希望知道有多少位選手還有可能獲得最終的冠軍,也就是說還有多少選手有可能通過最后一天的比賽獲得累計總分第一名
輸入輸出格式
輸入格式:
?
第一行輸入一個整數 N,表示參賽選手總數,保證 3<=N<=300000。
之后 N 行,其中第 i 行輸入一個整數 B[i]表示第 i 位選手已經獲得的累計分數,滿足0<=B[i]<=2000000。
?
輸出格式:
?
輸出只有一行,只輸出一個整數,表示有多少位選手有可能獲得最終的冠軍。
?
輸入輸出樣例
輸入樣例#1:
3 8 10 9
輸出樣例#1:
3
輸入樣例#2:
5 15 14 15 12 14
輸出樣例#2:
4
說明
對于 20%的數據, 3<=N<=600。
對于 50%的數據, 3<=N<=10000。
對于 100%的數據, 3<=N<=300000 且 0<=B[i]<=2000000。
?
貪心,如果第一名得一分,第i名得n分,第i名超過了第一名,ans++
?
#include <algorithm>
#include <cstdio>
using namespace std;
int n,a[300001],ans = 0;
int main() {scanf("%d",&n);for (int i = 1;i <= n;i++) scanf("%d",&a[i]);sort(a+1,a+n+1);for (int i = 1;i < n;i++)if (a[i]+n >= a[n]+1) ans++;printf("%d",ans+1);return 0;
}
?
轉載于:https://www.cnblogs.com/lrj124/p/7429895.html
總結
以上是生活随笔為你收集整理的【AHOI 2016初中组】 自行车比赛 - 贪心的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 专业选择求助:香港城大的marketin
- 下一篇: 心扉扉梦扉扉是什么歌啊?