• 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 }
  • 相关阅读:
    POJ 1017
    poj 2709
    poj 1328
    POJ 2386
    POJ 1065
    POJ 3728
    hdu--1004--Let the Balloon Rise
    hdu--2570--迷瘴(贪心)
    hdu--1257--最少拦截系统(贪心)
    hdu--1230--火星A+B
  • 原文地址:https://www.cnblogs.com/bfshm/p/3928152.html
Copyright © 2020-2023  润新知