码迷,mamicode.com
首页 > 其他好文 > 详细

bzoj1816: [Cqoi2010]扑克牌(二分答案判断)

时间:2018-03-05 21:40:09      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:sans   span   min   ret   bsp   col   cstring   scanf   扑克   

1816: [Cqoi2010]扑克牌

题目:传送门 

题解:

   被一道毒瘤题搞残了...弃了坑来刷刷水题

   一开始还想复杂了...结果发现二分水过:

   二分答案...然后check一下,joker肯定尽量用mid次,那么哪种牌不够就补(因为每次只能补一种,所以如果次数用完就return false)

代码:

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<cstdlib>
 4 #include<cmath>
 5 #include<algorithm>
 6 using namespace std;
 7 int n,m,ans;
 8 int a[1100];
 9 bool check(int x)
10 {
11     int s=min(m,x);
12     for(int i=1;i<=n;i++)
13     {
14         if(a[i]<x)
15         {
16             s=s-(x-a[i]);
17             if(s<0)return false;
18         }
19     }
20     return true;
21 }
22 int main()
23 {
24     scanf("%d%d",&n,&m);
25     for(int i=1;i<=n;i++)scanf("%d",&a[i]);
26     int l=0,r=999999999;ans=0;
27     while(l<=r)
28     {
29         int mid=(l+r)/2;
30         if(check(mid)==true)
31         {
32             l=mid+1;
33             ans=mid;
34         }
35         else r=mid-1;
36     }
37     printf("%d\n",ans);
38     return 0;
39 }

 

bzoj1816: [Cqoi2010]扑克牌(二分答案判断)

标签:sans   span   min   ret   bsp   col   cstring   scanf   扑克   

原文地址:https://www.cnblogs.com/CHerish_OI/p/8511457.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!