zoukankan      html  css  js  c++  java
  • hdu 4972 根据每轮篮球赛分差求结果

    http://acm.hdu.edu.cn/showproblem.php?pid=4972

    两支球队进行篮球比赛,每进一次球后更新比分牌,比分牌的计数方法是记录两队比分差的绝对值,每次进球的分可能是1,2,3分。给定比赛中的计分情况,问说最后比分有多少种情况。

    分情况讨论即可:

    相邻计分之差大于3或者相等并且不等于1的话,为非法输入

    相邻计分为1-2或者2-1的时候,会对应有两种的的分情况

    其他情况下,不会造成新的比分情况产生

    需要特判对于最后一次比分差为0的情况,就没有谁赢谁输一说。

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    using namespace std;
    
    int main()
    {
        long long T,n,cas=0,ok,l,r,ans;
        long long a[110000];
    
        scanf("%I64d",&T);
        while (T--){
            cas++;
            scanf("%I64d",&n);
            for (int i=1;i<=n;i++) scanf("%I64d",&a[i]);
            a[0]=0;
            l=0;
            r=0;
            ok=1;
            if (n==0){
                printf("Case #%I64d: 1
    ",cas);
                continue;
            }
            for (int i=1;i<=n;i++){
                if (a[i]<0 || abs(a[i]-a[i-1])>3) {ok=0;break;} else
                if (a[i]==a[i-1] && (a[i]!=1 || a[i-1]!=1)) {ok=0;break;} else
                if (a[i-1]==1 && a[i]==1) {l+=1;r+=1;}  else
                if (a[i-1]==1 && a[i]==2) {r+=2;}  else
                if (a[i-1]==2 && a[i]==1) {l+=1;r+=1;}  else
                if (a[i-1]<a[i]) r+=abs(a[i]-a[i-1]);else
                if (a[i-1]>a[i]) l+=abs(a[i]-a[i-1]);
    
        //        printf("%d %d
    ",l,r);
            }
            if (!ok) ans=0;else
                if (a[n]==0)
                    ans=(r-l-a[n]+1); else
                    ans=(r-l-a[n]+1)*2;
            printf("Case #%I64d: %I64d
    ",cas,ans);
        }
        return 0;
    }


  • 相关阅读:
    网络基础
    Web开发几种常用工具
    win组合键概述(windows10)
    Alfred使用
    Java8之新特性--modules
    jsp九大内置对象和四大作用域
    authtype
    Myeclipse中的快捷键
    如何在Jenkins CI 里调试
    写好unit test的建议和例子
  • 原文地址:https://www.cnblogs.com/zibaohun/p/4046827.html
Copyright © 2011-2022 走看看