【Yellow Cards CodeForces - 1215A 】【贪心】

该题难点在于求最小的离开数,最大的没什么好说的,关键是求最小的。 可以这样去想,最小的离开数就是每个人获得的牌数等于他所能接受的最大牌数-1,这样就可以直接比较m=a1(k1-1)+a2(k2-1)与n的大小,n-m即为最小的离开数。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<map>
#include<algorithm>
#include<cmath>
#include<cstdlib>
#include<vector>
#include<queue>
using namespace std;
typedef long long LL;
int a1, a2, k1, k2, n;
int main()
{
    // freopen("input.txt", "r", stdin);
    // freopen("output.txt", "w", stdout);
    scanf("%d %d %d %d %d", &a1, &a2, &k1, &k2, &n);
    int m = a1 * (k1 - 1) + a2 * (k2 - 1);
    if(n <= m)
        printf("0");
    else 
        printf("%d", n - m);
    int cnt = 0, res = n;
    if(k1 > k2)
    {
        cnt = n / k2;
        if(cnt > a2)
        {
            cnt = a2;
            res -= cnt * k2;
        }
        else 
            res -= cnt * k2;
        cnt += res / k1;
    }
    else 
    {
        cnt = n / k1;
        if(cnt > a1)
        {
            cnt = a1;
            res -= cnt * k1;
        }
        else 
            res -= cnt * k1;
        cnt += res / k2;
    }
    printf(" %d\n", cnt); 
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励