Football 南邮NOJ网络选拔赛2082
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\n",sum); } if(m==q) { sum+=m*3; printf("%d\n",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\n",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
题目来源
版权声明:本文为博主原创文章,未经博主允许不得转载。
posted on 2015-03-29 21:21 Tob__yuhong 阅读(166) 评论(0) 编辑 收藏 举报