我们当中有很多热爱中国足球的同学,我们都知道中超(中国足球超级联赛)的规则:
一场比赛中,若获胜则获得3的积分,若打平则获得1分,若失败获得0积分。
这个问题很简单,假设N轮比赛中你一共攻入S个球,丢掉T个球,那么你可能获得的最大得分和最小得分是多少
刷数论题的时候刷到这个了……
这真的能叫数论题吗?不就是个裸的贪心
考虑把最大得分和最小得分分开讨论:
最大得分
- 进球数还没有总场次多
- 进球数多于胜场
最小得分
- 如果进球数已经多余了丢球数
代码:
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll s,t,n;
int main()
{
while(scanf("%lld%lld%lld",&s,&t,&n)!=EOF)
{
ll ans1=0,ans2=0;
if(s<n)
{
ans1=3*s+n-s-1;
if(!t) ans1++;
}
else
{
ans1=3*max(n-1,min(n,s-t));
if(n-s+t==1) ans1++;
}
if(s>t) ans2=3+max(0LL,n-t-1);
else ans2=min(3+max(0LL,n-t-1),max(n-t+s,0LL));
printf("%lld %lld\n",ans1,ans2);
}
return 0;
}