首页 > 代码库 > hdu 4972 A simple dynamic programming problem (转化 乱搞 思维题) 2014多校10
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\n", ca++); //不存在的情况38 else if(a[n]==0)39 printf("Case #%d: %d\n", ca++, ans+1); //最后分差为0,结果少了一半40 else41 printf("Case #%d: %d\n", ca++, 2*ans+2);42 }43 return 0;44 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。