Codeforces Round #585 (Div. 2) A.Yellow Cards

思路:求最大很好求,先计算比较是否能将较小的黄牌数的球队队员都罚下去,如果数量不够就需要补另外一个队

求最小需要思考一下,方法是把k-1乘相应的个数(即被罚下的临界值)如果大于,直接减即可(因为此时都差1),如果小于则直接为0即不需要有人下场

代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
 
    int a1,a2,k1,k2,m,n,k;
    int num1=0,num=0,mul,div,mul1;
    cin>>a1>>a2>>k1>>k2>>m;
    n=m;
    if(k1>k2)
    {
        div=n/k2;
        if(div<=a2)
        {
            num=div;
        }
        else if(div>a2)
        {
            num+=a2;
            n-=k2*a2;
            num+=n/k1;
        }
        mul1=(k1-1)*a1+(k2-1)*a2;
        if(mul1>m)
        {
            num1=0;
        }
        else
        {
        mul=k1*a1;
        if(mul>m)
        {
            num1=0;
        }
        else
        {
            num1=m-mul1;
        }
        }
        cout<<num1<<" "<<num<<endl;
    }
    else
    {
        div=n/k1;
        if(div<=a1)
        {
            num=div;
        }
        else if(div>a1)
        {
            num+=a1;
            n-=k1*a1;
            num+=n/k2;
        }
        mul1=(k1-1)*a1+(k2-1)*a2;
        if(mul1>m)
        {
            num1=0;
        }
        else
        {
         mul=k2*a2;
        if(mul>m)
        {
            num1=0;
        }
        else
        {
            num1=m-mul1;
        }
        }
        cout<<num1<<" "<<num<<endl;
    }
    return 0;
 
}

 

 

题意:

柏林足球杯的决赛最近举行了。裁判在整场比赛中出示了nn张黄牌。比赛开始时,一队有1名队员,二队有2名队员。

在柏林足球中,把球员罚下场的规则有点不同。如果一队球员在整场比赛中收到k1张黄牌,他就不能再参加比赛了——他被罚下了。如果第二队的球员收到K2张黄牌,他就会被罚下。球员离开比赛后,他再也不能收到任何黄牌。N张黄牌中的每一张都显示给一个玩家。即使来自一个队(甚至来自两个队)的所有球员都离开比赛,比赛仍将继续。

裁判员丢失了他关于谁领到黄牌的记录。帮助他确定可能被赶出游戏的玩家的最小和最大数量。

输入:

第一行包含一个整数a1(1≤a1≤1000)-第一队的球员数。

第二行包含一个整数a2(1≤a2≤1000)-第二队的球员数量。

第三行包含一个整数k1(1≤k1≤1000)-一队球员可以收到的黄牌的最大数量(在收到许多黄牌后,他将退出比赛)。

第四行包含一个整数k2(1≤k2≤1000)——第二组玩家可以收到的黄牌的最大数量(在收到那么多黄牌后,他离开游戏)。

第五行包含一个整数n n(1≤n≤a1 k1+a2 k2)

-比赛中出示的黄牌数目。

输出:

打印两个整数-可能被赶出游戏的最小和最大玩家数。

 

 

 

 


 

上一篇:在OpenCV里实现高斯平滑4


下一篇:python基础----day3(字典)