zoukankan      html  css  js  c++  java
  • Football 南邮NOJ网络选拔赛2082



    Football

    时间限制(普通/Java) : 1000 MS/ 3000 MS          运行内存限制 : 65536 KByte
    总提交 : 246            测试通过 : 59 

    题目描述

    现在你是一名足球经理,你的队伍将参加“南邮杯”的比赛。然而你拥有预知未来的能力,你可以预见你的队伍接下来进行的n场比赛每场的进球数和失球数。每胜一场队伍可得3分,平一场可得1分,输一场得0分。然而“南邮杯”是有黑幕的,你通过砸钱现在可以买到m个进球,问现在如何安排这m个进球,可以使得队伍获得最大的积分,求出这个最大的积分。



    输入

    多样例输入。

    第一行给出n(1<=n<=10)m(0<=m<=20)分别代表你队伍进行的比赛数以及队伍可买的进球数。

    接下来n行,每行分别有两个数xy分别表示该场比赛在没有买进球的情况下你队伍的进球数和失球数。

    输出

    对于每个样例答案输出一行输出一个整数,表示通过买球的方式你的队伍可获得的最大积分。

    样例输入

    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

    时间限制(普通/Java) : 1000 MS/ 3000 MS          运行内存限制 : 65536 KByte
    总提交 : 246            测试通过 : 59 

    题目描述

    现在你是一名足球经理,你的队伍将参加“南邮杯”的比赛。然而你拥有预知未来的能力,你可以预见你的队伍接下来进行的n场比赛每场的进球数和失球数。每胜一场队伍可得3分,平一场可得1分,输一场得0分。然而“南邮杯”是有黑幕的,你通过砸钱现在可以买到m个进球,问现在如何安排这m个进球,可以使得队伍获得最大的积分,求出这个最大的积分。



    输入

    多样例输入。

    第一行给出n(1<=n<=10)m(0<=m<=20)分别代表你队伍进行的比赛数以及队伍可买的进球数。

    接下来n行,每行分别有两个数xy分别表示该场比赛在没有买进球的情况下你队伍的进球数和失球数。

    输出

    对于每个样例答案输出一行输出一个整数,表示通过买球的方式你的队伍可获得的最大积分。

    样例输入

    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

    题目来源

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    Linux防火墙白名单设置
    postgre级联更新
    postgre查询表和记录数,查表字段
    PostgreSQL中的 时间格式转化常识
    android 阿里云oss上传
    android studio connot resolve
    Mysql 优化,慢查询
    Docker 容器更新,打包,上传到阿里云
    Mysql 替换字段的一部分内容
    Docker 安装Nginx
  • 原文地址:https://www.cnblogs.com/Tobyuyu/p/4965677.html
Copyright © 2011-2022 走看看