题目: [CQOI 2010]扑克牌 ,哈哈,我们今天来看一道二分答案的题嘛,这是选自CQOI上的一道题,好了,我们一起来看看题意吧:
考虑到直接复制题目,或者截屏的方式不是很方便阅读,我就把直接题目链接放下面!
题目传送门: [CQOI2010]扑克牌
思路
:
直接二分答案,假设答案是x,那么差的joker数量必须要小于等于m,然后根据题目要求,每套只能用1张joker,所以差的joker数量还要小于等于x,具体的我们直接看代码!
我们来看看成功AC的代码吧:
#include<bits/stdc++.h> using namespace std; #define inf 0x3f3f3f3f typedef long long ll; int n,m; const int N=60; int a[N]; ll cnt; int check(int x){ cnt=0; for(int i=1;i<=n;i++) if(a[i]<x) cnt+=x-a[i]; return cnt<=min(m,x); } int main(){ ios::sync_with_stdio(false); cin>>n>>m; for(int i=1;i<=n;i++) cin>>a[i]; ll l=0,r=inf; while(l<r){//二分模板 ll mid = (l+r+1)>>1; if(check(mid)) l=mid; else r=mid-1; } cout<<l<<"\n"; return 0; }