Yellow Cards CodeForces (数学题)

原题链接:vj

题意:在一场比赛中,裁判共出示了n张黄牌,已知两个队伍的惩罚机制不一样(就是在两个队中,要踢除一个人需要的黄牌数量不一样)给出两个队伍人数:a,b,踢一个人需要出示的黄牌数:k1,k2 总共出示的黄牌数:n,求最少与最多能够踢出的人数。

思路:踢的人最少,简单。大家先一起被罚,每个人罚到只剩一次黄牌的机会,然后用n去减所有人都不下场能承受的最大黄牌数,若所得小于等于0,则最少罚人为0,否则所得即为所求; 求罚人最多,比较两个队伍罚下一人用牌较少的一队,先罚这一队,若n有剩余就去罚另一队。

代码:

#include<stdio.h>
int main()
{
    int a,b,k1,k2,n,mn,mx;
    scanf("%d%d%d%d%d",&a,&b,&k1,&k2,&n);
        mn=(a*(k1-1)+b*(k2-1)>=n)? 0 : n-a*(k1-1)-b*(k2-1);
        /*求最少原则:总票数-每个队员保证不被踢出可以提供的的票数之和
          求最多原则:先踢好踢的,剩的票踢难的*/
        if(k1<k2){
            int x1=n-k1*a;
            mx=(x1<=0)? n/k1 : x1/k2+a;
        }
        else{
            int x2=n-k2*b;
            mx=(x2<=0)? n/k2 : x2/k1+b;
        }
    printf("%d %d\n",mn,mx);
    return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值