Football
总提交 : 246 测试通过 : 59
题目描述
现在你是一名足球经理,你的队伍将参加“南邮杯”的比赛。然而你拥有预知未来的能力,你可以预见你的队伍接下来进行的n场比赛每场的进球数和失球数。每胜一场队伍可得3分,平一场可得1分,输一场得0分。然而“南邮杯”是有黑幕的,你通过砸钱现在可以买到m个进球,问现在如何安排这m个进球,可以使得队伍获得最大的积分,求出这个最大的积分。
输入
多样例输入。
第一行给出n(1<=n<=10)和m(0<=m<=20)分别代表你队伍进行的比赛数以及队伍可买的进球数。
接下来n行,每行分别有两个数x和y分别表示该场比赛在没有买进球的情况下你队伍的进球数和失球数。
输出
对于每个样例答案输出一行输出一个整数,表示通过买球的方式你的队伍可获得的最大积分。
样例输入
2 1
1 1
1 1
3 2
1 3
3 1
2 2
4 10
1 1
2 2
1 3
0 4
样例输出
4
6
12
#include<cstdio>
#include<stdlib.h>
#include<stdio.h>
#include<iostream>
using namespace std;
int comp(const void *a,const void *b)
{
return *(int*)b-*(int*)a;
}
int main()
{
int n,m;
while(scanf("%d%d",&n,&m)==2)
{
int a[12],cha,x,y,cnt=0,q=0,sum=0;
for(int i=0;i<n;i++)
{
scanf("%d%d",&x,&y);
cha=x-y;
if(cha>0)
{
sum+=3;
}
if(cha==0)
{
q++;
}
if(cha<0)
{
a[cnt++]=cha;
}
}
if(cnt>0)
{
qsort(a,cnt,sizeof(int),comp);
}
if(m<q)
{
sum+=3*m;
sum+=q-m;
printf("%d
",sum);
}
if(m==q)
{
sum+=m*3;
printf("%d
",sum);
}
else if(m>q)
{
sum+=3*q;
m=m-q;
for(int i=0;i<cnt;i++)
{
if(m<-a[i])
{
break;
}
else
{
m+=a[i];
if(m==0)
{
sum+=1;
break;
}
if(m==1)
{
sum+=3;
break;
}
if(m>1)
{
m--;
sum+=3;
continue;
}
}
}
printf("%d
",sum);
}
}
}
过得也较为轻松,主要是if条件控制~
Football
总提交 : 246 测试通过 : 59
题目描述
现在你是一名足球经理,你的队伍将参加“南邮杯”的比赛。然而你拥有预知未来的能力,你可以预见你的队伍接下来进行的n场比赛每场的进球数和失球数。每胜一场队伍可得3分,平一场可得1分,输一场得0分。然而“南邮杯”是有黑幕的,你通过砸钱现在可以买到m个进球,问现在如何安排这m个进球,可以使得队伍获得最大的积分,求出这个最大的积分。
输入
多样例输入。
第一行给出n(1<=n<=10)和m(0<=m<=20)分别代表你队伍进行的比赛数以及队伍可买的进球数。
接下来n行,每行分别有两个数x和y分别表示该场比赛在没有买进球的情况下你队伍的进球数和失球数。
输出
对于每个样例答案输出一行输出一个整数,表示通过买球的方式你的队伍可获得的最大积分。
样例输入
2 1
1 1
1 1
3 2
1 3
3 1
2 2
4 10
1 1
2 2
1 3
0 4
样例输出
4
6
12
题目来源
版权声明:本文为博主原创文章,未经博主允许不得转载。