zoukankan      html  css  js  c++  java
  • bzoj1816[Cqoi2010]扑克牌

    bzoj1816[Cqoi2010]扑克牌

    题意:

    n种牌,第i种牌的数目为ci还有m张鬼。可以用每种牌各一张来组成一套牌,其中一张可以用鬼代替。求最多可组几套牌。n最大50。

    题解:

    其实这道题我不是特别理解。做法是二分可组多少套,累加套数减每个ci的差,如果这个累加和大于m与套数比较的最小值就不为可行解。还要再思考。

    代码:

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <algorithm>
     4 #define inc(i,j,k) for(int i=j;i<=k;i++)
     5 using namespace std;
     6 
     7 int a[60],n,m;
     8 bool check(int x){
     9     int y=min(x,m); inc(i,1,n)if(x>a[i]){y-=(x-a[i]); if(y<0)return 0;} return 1;
    10 }
    11 int main(){
    12     scanf("%d%d",&n,&m); inc(i,1,n)scanf("%d",&a[i]);
    13     int l=0,r=1000000000,ans;
    14     while(l<=r){
    15         int mid=l+((r-l)>>1); if(check(mid))ans=mid,l=mid+1;else r=mid-1;
    16     }
    17     printf("%d",ans);
    18     return 0;
    19 }

    20160520

  • 相关阅读:
    jQuery-选择器及属性修改
    jQuery 基础理论
    CSS 之 BFC(块级格式化上下文)
    H5--Web Storage
    H5 -WebWorker
    H5 --拖放
    nodejs Multer中间件
    k8s pod
    kubernetes
    优化CUDA数据传输
  • 原文地址:https://www.cnblogs.com/YuanZiming/p/5732697.html
Copyright © 2011-2022 走看看