原题链接:Problem - C - Codeforces

题意:有n个人和你一起比赛,每个人有一个时间a[i]

对于n个人之间,比编号,i>j的话第i个人赢

你有总共m的时间,你和这n个人比,你只有花费的时间>=a[i]才能赢下标为i的人

换句话来说,如果m>=a[3]+a[6]+a[10]+a[x],那么你就可以赢3,6,10,x这四个人

名称按照赢的次数多来拍,比如有3个人赢5次,1个人赢1次,2个人赢0次

那么前三个人排第一,第四个人排第四,后两个人排第五

求你能排到的最小的名次

思路:如果我们要排前面的话就要赢的多,那么想赢的多我们就贪心的挑a小的人比

那么把a按从小到大取之后,算出来我们最多能赢x局

那么对于每个人i,最少赢i-1局最多赢i局

那么n个人至少赢的局数是:

0 1 2 3 ... x x+1 ...n-1

因为我们最多赢x局,所以我们不可能比至少赢x+1局的人(下标为x+2)的名次高,也不可能比至少赢x-1 的人(下标为x)的名次低,因为他最多赢x局。

那么我们就看能不能赢至少赢x局的人(下标为x+1),假设我们没有赢他,我们的名次是n-x+1,如果我们赢了他,他的局数就是x,我们的局数也是x,我们的名次就可以再提升一名(和他并列),那么我们就想办法看看能不能赢下标为x+1的人

有两种情况:

如果我们已经赢了x+1的人,我们就直接提升一名

如果我们没有赢x+1的人,那么我们就看能不能把在之前赢过的人里面挑一个人把他换成x+1,根据贪心我们肯定选赢过的a最大的人

假设我们m的时间在赢了x个人之后还剩下y,那么我们就看y加上赢过的最大的a能不能>=a[x+1],如果大于说明我们可以换,名次提升,如果不能就换不了。

#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,m;
const int N=5e5+10;
int a[N],b[N];
void sove(){cin>>n>>m;int sum=0;for(int i=1;i<=n;i++){cin>>a[i];b[i]=a[i];sum+=a[i];}if(m>=sum){cout<<1<<endl;return ;}sort(b+1,b+1+n);int con=0,id=-1;
//    cout<<"sum=="<<sum<<endl;for(int i=1;i<=n;i++){if(m>=b[i]){m-=b[i];con++;id=i;}else{break;}}if(id==-1){cout<<n+1<<endl;return ;}
//    cout<<"con=="<<con<<endl;int ans=n-con+1;if(m+b[id]>=a[con+1]){ans--;}cout<<ans<<endl;
}
signed main(){int t;cin>>t;while(t--){sove();}return 0;
}
/*
1
5 0
1 1 1 1 1
*/

C. Yet Another Tournament相关推荐

  1. 【CF913F】Strongly Connected Tournament 概率神题

    [CF913F]Strongly Connected Tournament 题意:有n个人进行如下锦标赛: 1.所有人都和所有其他的人进行一场比赛,其中标号为i的人打赢标号为j的人(i<j)的概 ...

  2. Educational Codeforces Round 13 E. Another Sith Tournament 状压dp

    E. Another Sith Tournament 题目连接: http://www.codeforces.com/contest/678/problem/E Description The rul ...

  3. Tournament CodeForces - 27B(dfs)

    The tournament «Sleepyhead-2010» in the rapid falling asleep has just finished in Berland. n best pa ...

  4. [2021-09-02 contest]CF1251C,可达性统计(bitset优化dp),Boomerang Tournament(状压dp),小蓝的好友(mrx)(treap平衡树)

    文章目录 CF1251C Minimize The Integer acwing164:可达性统计 Facebook Hacker Cup 2016 Round 1 Boomerang Tournam ...

  5. 【CodeForces - 357C 】Knight Tournament(并查集 或 STLset)

    题干: Hooray! Berl II, the king of Berland is making a knight tournament. The king has already sent th ...

  6. Codeforces 678E. Another Sith Tournament(概率DP,状压)

    Codeforces 678E. Another Sith Tournament 题意: n(n<=18)个人打擂台赛,给定任意两人对决的胜负概率,比赛规则:可指定一人作为最开始的擂主,每次可指 ...

  7. Atcoder Codefestival Exhibition/Team Relay/Tournament Round 简要题解

    Exhibition Awkward 考虑容斥,至少某些限制不满足. 把不满足的边画出来,发现是若干条不相交路径,DP即可. #include <bits/stdc++.h> #defin ...

  8. 【SGU 448】Controlled Tournament(状态压缩动态规划)

    题目链接 [SGU 448]Controlled Tournament 题目大意 给定比赛人员个数nnn,你希望赢的人的编号m" role="presentation" ...

  9. Knight Tournament

    set的应用 一个人只能被打败一次,所以在被打败后就要从set中删去,这样才能保证从左边界遍历到右边界的过程中消耗较少的时间,如果纯暴力不优化的话肯定会超时 Hooray! Berl II, the ...

  10. CF850D Tournament Construction

    CF850D Tournament Construction 题目传送门 挺难的一道构造题. 题目大意: 给定 mmm 个数的一个非负整数集合,不超过 303030.你需要构造一个竞赛图,满足:所有点 ...

最新文章

  1. LSTM之父撰文,纪念这位图灵奖遗珠、“AI理论之父”
  2. SAP系统上线支持维护制度
  3. springboot中三种xxxx.setAttribute()并与python中flask作对应比较+容器的通俗理解
  4. 用计算机表白我不喜欢你了,隐藏式表白,表白不一定要用“我喜欢你”这几个字...
  5. Java服务器上显示图片问题_java,_服务器读取图片到jsp显示问题,java - phpStudy
  6. 人工智能中国专利技术分析报告发布,百度三年蝉联榜首
  7. ibm服务器系统电池型号,IBM服务器_X366型号2003系统恢复
  8. PHP令人困惑的strtotime
  9. 用过那些号称媲美迅雷的下载神器,发现没一个能打的。
  10. 暴风激活后浏览器被锁定首页
  11. TigerGraph百万美元挑战赛奖项全揭晓,通过图技术解决全球问题的创新方案令人印象深刻
  12. springboot+Rabit实战二:(Rabbit MQ web 界面管理)
  13. 低代码局中局:是IT革命还是高级外包? | 甲子光年
  14. 区块链入门教程(8)--WeBASE-Front节点前置服务
  15. [玩转编程] C语言+模拟器制作简单脚本
  16. 基于R语言对股市价格预测的ARIMA建模
  17. 浅谈关于油麦菜的特性与如何种植优质品种的油麦菜
  18. Raspberry Pi简介
  19. L. Spicy Restaurant(bfs)
  20. Armadillo使用介绍(四):向量创建

热门文章

  1. PDMReader介绍
  2. RabbitMQ:订阅模型-消息订阅模式
  3. 周易六十四卦——歸妹卦
  4. Uint8Array转普通数组
  5. MP4V2 录制mp4(h264+aac)视频
  6. ElasticSearch中全文搜索(单词搜索、多次搜索、组合搜索和权重搜索)
  7. 任天堂将于200个国家推出Pokemon GO 中国还有待考虑
  8. 莱佛士师生参访国内当红设计工作室DPD
  9. 【STM32单片机+DHT11温度传感器】快速上手,适用于多种型号芯片
  10. 生出一番观沧海的磅礴气势