首页 > 其他 > 详细

[BZOJ1816][CQOI2010]扑克牌

时间:2018-10-06 20:24:43      阅读:161      评论:0      收藏:0      [点我收藏+]

解析

看到 \(n\) 很小, \(C_i\) 很大,多半是二分。

考虑二分牌数,检查 joker 能否补齐其他的缺少部分

const int maxn = 60;

int c[maxn], n, m, l = 0, r = 0x3f3f3f3f, mid;

bool check(int val) {
    int sum = 0;
    forn(i, n) {
        sum += max(val - c[i], 0);
        if (sum > val || sum > m) return 0;
    }
    return 1;
}

int main() {
    read(n), read(m);
    forn(i, n) read(c[i]);
    while (l < r) {
        if (check(mid = (l + r + 1) >> 1)) l = mid; else r = mid - 1;
    }
    printf("%d", l);
}

[BZOJ1816][CQOI2010]扑克牌

原文:https://www.cnblogs.com/Alessandro/p/9748185.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!