【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); 
}
posted @ 2019-10-11 07:29  DIY-Z  阅读(271)  评论(0编辑  收藏  举报