HDU-4972 篮球赛比分

包含不合法数据也就算了。。题意不清楚也就算了。。篮球还有平局也算是很屌了。。。

#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <queue>
using namespace std;
int a[1100000];
int n;
long long sum;
int main()
{
	int t;
	int k=1;
	int flag;
	scanf("%d",&t);
	while(t--)
	{
		flag=0;
		sum=0;
		scanf("%d",&n);
		for(int i=0;i<n;i++)
		{
			scanf("%d",&a[i]);
		}
		if(a[0]<=0||a[0]>3)
		{
			flag=1;
		}
		for(int i=1;i<n;i++)
		{
			if(a[i-1]==1&&a[i]==1)
			{

			}
			if(a[i-1]==2&&a[i]==1)
			{
				sum++;
			}
			if(a[i-1]==1&&a[i]==2)
			{
				sum++;
			}
			if(a[i]<0||abs(a[i]-a[i-1])>3||(a[i]==a[i-1]&&a[i]!=1))
			{
				flag=1;
			}
			if(flag==1)
			{
				break;
			}
		}
		if(flag==1)
		{
			printf("Case #%d: 0\n",k++);
		}
		else
		{
			if(a[n-1]==0)
			{
				sum=sum+1;
			}
			else
			{
				sum=(sum+1)*2;
			}
			printf("Case #%d: %I64d\n",k++,sum);
		}
	}
	return 0;
}

HDU-4972 篮球赛比分,布布扣,bubuko.com

时间: 2024-10-29 19:12:14

HDU-4972 篮球赛比分的相关文章

hdu 4972 A simple dynamic programming problem(高效)

题目链接:hdu 4972 A simple dynamic programming problem 题目大意:两支球队进行篮球比赛,每进一次球后更新比分牌,比分牌的计数方法是记录两队比分差的绝对值,每次进球的分可能是1,2,3分.给定比赛中的计分情况,问说最后比分有多少种情况. 解题思路:分类讨论: 相邻计分为1-2或者2-1的时候,会对应有两种的的分情况 相邻计分之差大于3或者说相等并且不等于1的话,为非法输入 其他情况下,不会造成新的比分情况产生 对于最后一次比分差为0的情况,就没有谁赢谁

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 &

2014多校联合十(HDU 4972 HDU 4973 HDU 4974 HDU 4975)

HDU 4972 A simple dynamic programming problem 题意:篮球比赛有1.2.3分球  现给出两队的分差序列(5:3 分差2  3:5分差也是2)  问有多少种可能的比分 思路: 比较简单的想法题  可以类一张表"从分差x到分差y一共有几种情况"  很容易发现只有1->2和2->1的时候会多一种情况  其他均是一种  所以只需要统计这种特殊分差即可  注意一下最后结果要不要乘2  如果最后分差是0就不用因为x:x只有一种  但是最后分差

HDU 4972 A simple dynamic programming problem(推理)

HDU 4972 A simple dynamic programming problem 题目链接 推理,会发现只有前一个和当前一个分数为(1, 2)或(2, 1)的时候,会有两种加分方法,其他情况最多就一种情况,所以只要统计(1, 2),(2, 1)的个数,最后判断分差是否为0,如果不为0,那么可能是正或负,那就是两倍 代码: #include <cstdio> #include <cstring> const int N = 100005; int t, n, a[N]; i

HDU 4972 A simple dynamic programming problem(数学思维题)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4972 Problem Description Dragon is watching NBA. He loves James and Miami Heat. Here's an introduction of basketball game:http://en.wikipedia.org/wiki/Basketball. However the game in Dragon's version is

hdu - 4972 - A simple dynamic programming problem(数学 + dp)

题意:NBA比赛,双方共N次进球(N<=100000),无论哪方,进一个球(得分只可能为1,2,3),就记录一次(记两队分数差的绝对值),问最后两队的比分有多少种. 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4972 -->>知道最后的比分差k,怎么求得比分呢?设分数较低的一方的最后分数为x,则另一方的最后分数为x + k,设双方最后总分和为S,则x  = (S - k) / 2,可得双方的比分..所以,只要知道最后双方的总分和,就可以

HDU 4972 Bisharp and Charizard 想法题

Bisharp and Charizard Time Limit: 1 Sec  Memory Limit: 256 MB Description Dragon is watching NBA. He loves James and Miami Heat. Here's an introduction of basketball game:http://en.wikipedia.org/wiki/Basketball. However the game in Dragon's version i

hdu 4972 A simple dynamic programming problem (每次记录两队得分差值求结果数)

因为是每次投篮后记录两队得分的差值,所以两个队伍的总分是不断增加的,可以发现只有差值由1-->2或者2-->1的情况才可能产生产生两种总分和的结果如 0:2可以变成2:3和1:2  其他的情况都只能是一种 郜大可的代码: 1 #include<stdio.h> 2 #include<string.h> 3 #include<iostream> 4 #include<algorithm> 5 using namespace std; 6 #defi

我的Windows Phone 8

学习Windows Phone 8开发,将自己收集到的学习资料做一个汇总(不断更新). 我的Windows Phone应用 DotaMax MyAppToStart 麦子学院 WP8.1版(UI简陋) WP7学习博客 整理Windows Phone 7 教程1.0 超过500篇文章   作者:机微网 WP7 开发31日谈 WP8学习视频 传智播客 .NET视频 主要初学: C#编程基础 C#面向对象基础 WPF教程 WP7移动开发 WP8.1移动开发 麦子学院(免费观看,需要注册账号)  作者: