hdu 4972 A simple dynamic programming problem (转化 乱搞 思维题) 2014多校10

题目链接

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

分析:

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

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

hdu 4972 A simple dynamic programming problem (转化 乱搞 思维题) 2014多校10

 #include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <vector>
#include <algorithm>
#define LL __int64
const int maxn = +;
using namespace std;
int a[maxn]; int main()
{
int i, t, n, ca = , ans, f;
scanf("%d", &t);
while(t--)
{
ans = ; f = ;
scanf("%d", &n);
for(i = ; i <= n; i++)
{
scanf("%d", &a[i]);
if(i>=)
{
if(a[i-]== && a[i]==)
ans ++;
if(a[i-]== && a[i]==)
ans ++;
if(a[i-]==a[i] && a[i]!=) //这两种都是不符合规则的
f = ;
if(abs(a[i]-a[i-])>)
f = ;
}
}
if(f)
printf("Case #%d: 0\n", ca++); //不存在的情况
else if(a[n]==)
printf("Case #%d: %d\n", ca++, ans+); //最后分差为0,结果少了一半
else
printf("Case #%d: %d\n", ca++, *ans+);
}
return ;
}
上一篇:hdu 4888 2014多校第三场1002 Redraw Beautiful Drawings 网络流


下一篇:Linux shell —— 数组与关联数组