14多校 B-A simple dynamic programming problem
来源:互联网 发布:家电销售数据 编辑:程序博客网 时间:2024/05/29 23:24
题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=4972
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 much easier:
“There’s two teams fight for the winner. The only way to gain scores is to throw the basketball into the basket. Each time after throwing into the basket, the score gained by the team is 1, 2 or 3. However due to the uncertain factors in the game, it’s hard to predict which team will get the next goal”.
Dragon is a crazy fan of Miami Heat so that after each throw, he will write down the difference between two team’s score regardless of which team keeping ahead. For example, if Heat’s score is 15 and the opposite team’s score is 20, Dragon will write down 5. On the contrary, if Heat has 20 points and the opposite team has 15 points, Dragon will still write down 5.
Several days after the game, Dragon finds out the paper with his record, but he forgets the result of the game. It’s also fun to look though the differences without knowing who lead the game, for there are so many uncertain! Dragon loves uncertain, and he wants to know how many results could the game has gone?
Input
The first line of input contains only one integer T, the number of test cases. Following T blocks, each block describe one test case.
For each test case, the first line contains only one integer N(N<=100000), which means the number of records on the paper. Then there comes a line with N integers (a1, a2, a3, … , an). ai means the number of i-th record.
Output
Each output should occupy one line. Each line should start with “Case #i: “, with i implying the case number. Then for each case just puts an integer, implying the number of result could the game has gone.
Sample Input
2
2
2 3
4
1 3 5 7
Sample Output
Case #1: 2
Case #2: 2
Author
BJTU
Source
2014 Multi-University Training Contest 10
大意:多组数据,NBA比赛。每次进一个球,记一次比分的差值, 3:1 和 1:3 都记为 2 ,求最后比分结果有几种情况。
题解:
初始化 cnt=0;
①因为知道最终比赛的分差,我们只要知道比赛分数的总和就能确定最终比分
②只有在 1 2 或 2 1的情况下才会有增量为 1 或 3 的情况,cnt++
③最终比分差不为 0 ,ans=2*(cnt+1) 否则ans=cnt+1
⑤相邻分差大于等于 3,或相邻分差相等且不为 1,不存在
#include<bits/stdc++.h>using namespace std;const int N=100005; int n,a[N];int solve(){ int ans=1; for(int i=1;i<n;i++) { if((a[i]==2 && a[i-1]==1) || (a[i]==1 && a[i-1]==2)) ans++; if(abs( a[i]-a[i-1] )>3) return 0; if(a[i]==a[i-1] && a[i]!=1) return 0; } if(a[n-1]!=0) ans*=2; return ans; }int main(){ int t; scanf("%d",&t); for(int ii=1;ii<=t;ii++) { scanf("%d",&n); for(int i=0;i<n;i++) scanf("%d",&a[i]); printf("Case #%d: %d\n",ii,solve()); } return 0; }
- 14多校 B-A simple dynamic programming problem
- HDU 4972 A simple dynamic programming problem
- HDU 4972 A simple dynamic programming problem
- HDOJ 4972 A simple dynamic programming problem
- HDU-4972-A simple dynamic programming problem
- 【HDU】A simple dynamic programming problem
- HDU4972:A simple dynamic programming problem
- HDU4972 A simple dynamic programming problem(规律)
- hdu 4972 A simple dynamic programming problem 2014多校十
- 【杂题】 HDOJ 4972 A simple dynamic programming problem
- HDU 4972 A simple dynamic programming problem(推理)
- hdu 4972 A simple dynamic programming problem(高效)
- HDU 4972 A simple dynamic programming problem(找规律)
- hdu - 4972 - A simple dynamic programming problem(数学 + dp)
- HDU4972 A simple dynamic programming problem(找规律)
- hdu 4947 A simple dynamic programming problem(2014 Multi-University Training Contest 10)
- HDU 4972 A simple dynamic programming problem(数学思维题)
- hdu4972 A simple dynamic programming problem(多校第十场1002)
- 一周搞定期末考系列之《数字电子技术》
- Android 去电状态判断 录音
- [C++]第七届蓝桥杯决赛之广场舞
- java实现遍历树形菜单方法——struts.xml实现
- [leetcode]Remove Duplicates from Sorted Array(Java实现)
- 14多校 B-A simple dynamic programming problem
- 东莞市2011年信息学特长生测试题 花店布置(dp)
- 记录一些面试问题吧。
- POJ-3621: Sightseeing Cows【最优比率生成环】
- java I/O系统(8)-文件压缩
- main(int argc,char *argv[])
- 菜鸟初学maven,pom标签解释
- ninja ripper新版教程
- Maven-sonarqube-jenkins-git 持续集成开发环境的搭建