zoukankan      html  css  js  c++  java
  • hdu 4972 A simple dynamic programming problem (转化 乱搞 思维题) 2014多校10

    题目链接

    题意:给定一个数组记录两队之间分差,只记分差,不记谁高谁低,问最终有多少种比分的可能性

    分析:

    类似cf的题目,比赛的时候都没想出来,简直笨到极点。。。。。

    最后的差确定,只需要计算和的种类,有多少种就是多少。

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <cstdlib>
     5 #include <cmath>
     6 #include <vector>
     7 #include <algorithm>
     8 #define LL __int64
     9 const int maxn = 100000+10;
    10 using namespace std;
    11 int a[maxn];
    12 
    13 int main()
    14 {
    15     int i, t, n, ca = 1, ans, f;
    16     scanf("%d", &t);
    17     while(t--)
    18     {
    19         ans = 0; f = 0;
    20         scanf("%d", &n);
    21         for(i = 1; i <= n; i++)
    22         {
    23             scanf("%d", &a[i]);
    24             if(i>=2)
    25             {
    26                if(a[i-1]==1 && a[i]==2)
    27                ans ++;
    28                if(a[i-1]==2 && a[i]==1)
    29                ans ++;
    30                if(a[i-1]==a[i] && a[i]!=1) //这两种都是不符合规则的
    31                f = 1;
    32                if(abs(a[i]-a[i-1])>3)
    33                f = 1;
    34             }
    35         }
    36         if(f)
    37         printf("Case #%d: 0
    ", ca++);  //不存在的情况
    38         else if(a[n]==0)
    39         printf("Case #%d: %d
    ", ca++, ans+1);  //最后分差为0,结果少了一半
    40         else
    41         printf("Case #%d: %d
    ", ca++, 2*ans+2);
    42     }
    43     return 0;
    44 }
  • 相关阅读:
    C#循环语句练习(三)
    C#循环语句练习(二)
    C#的循环语句(一)
    switch case
    C#的选择语句
    C#的选择语句练习(二)
    C#的选择语句练习(一)
    2015.10.30
    16.缓存(Cache)
    15.禁用ViewState
  • 原文地址:https://www.cnblogs.com/bfshm/p/3928152.html
Copyright © 2011-2022 走看看