HDU ACM 4504 威威猫系列故事——篮球梦->DP

分析:d[i][j]表示前i回合获得j分的方法数。

d[i][j]=d[i-1][j-1]+d[i-1][j-2]+d[i-1][j-3]。

我方最多进攻20次,每次得3分,最多20*60的状态量。

#include<iostream>
using namespace std;
                      //dp[i][j]代表我方第i轮获得j分的种类数
__int64 dp[26][70];   //最大600s,600/15=40,40/2=20,最多20轮,最多得分20*3。

void Init() //初始打表
{
	int i,j;

	memset(dp,0,sizeof(dp));
	dp[1][1]=dp[1][2]=dp[1][3]=1;
	for(i=2;i<=20;i++)
		for(j=1;j<=60;j++)
		{
			if(j>1)
				dp[i][j]+=dp[i-1][j-1];
			if(j>2)
				dp[i][j]+=dp[i-1][j-2];
			if(j>3)
				dp[i][j]+=dp[i-1][j-3];
		}
}

void sovle(int A,int B,int t)
{
	int k,ta,tb,diff,i;
	__int64 ans;

	k=t/15;       //还可以进攻的轮数
	ta=(k+1)/2;   //我方进攻轮数,一开始我方进攻
	tb=k-ta;      //对方进攻轮数

	if(ta==0)
	{
		if(A>B)
			puts("1");  //已经赢了,算一次
		else
			puts("0");
		return ;
	}
	B+=tb;             //对方每轮获得1分,算总分
	diff=B-A+1;    //我方还差对方多少分才可以获胜且不是平局
	if(diff<0)   //已经获胜就设为0
		diff=0;

	ans=0;
	for(i=diff;i<=ta*3;i++)  //只要最终(第ta轮)比对方分数高都可以
		ans+=dp[ta][i];
	printf("%I64d\n",ans);
}

int main()
{
	int A,B,t;

	Init();
	while(scanf("%d%d%d",&A,&B,&t)==3)
		sovle(A,B,t);
    return 0;
}
时间: 2024-12-28 21:06:59

HDU ACM 4504 威威猫系列故事——篮球梦->DP的相关文章

HDU 4504 威威猫系列故事——篮球梦(dp)

http://acm.hdu.edu.cn/showproblem.php?pid=4504 题目大意: 中文都看得懂.不过我是看hint才正确理解什么意思的.开始的时候理解错了. 解题思路: 给定时间最多是600,最多进攻次数600/15=40次,我方进攻次数40/2=20次.如果深度搜索多少种情况, 那么时间复杂度是O(3^20),直接就超时了. 我知道要动态规划,但是自己dp不行,所以就看了网上别人的解题报告. dp[i][j]=dp[i-1][j-1]+dp[i-1][j-2]+dp[i

【HDOJ】4504 威威猫系列故事——篮球梦

水题. 1 #include <cstdio> 2 #include <cstdlib> 3 #include <cstring> 4 5 #define MAXN 25 6 int dp[MAXN][MAXN*3]; 7 8 void init() { 9 int i, j, k; 10 11 memset(dp, 0, sizeof(dp)); 12 dp[0][0] = dp[1][1] = dp[1][2] = dp[1][3] = 1; 13 for (i=2

HDOJ4540 威威猫系列故事——打地鼠 【DP】

威威猫系列故事--打地鼠 Time Limit: 300/100 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submission(s): 1445    Accepted Submission(s): 713 Problem Description 威威猫最近不务正业,每天沉迷于游戏"打地鼠". 每当朋友们劝他别太着迷游戏,应该好好工作的时候,他总是说,我是威威猫,猫打老鼠就是我的工作! 无话

HDU 4540 威威猫系列故事――打地鼠(DP)

D - 威威猫系列故事――打地鼠 Time Limit:100MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 4540 Description 威威猫最近不务正业,每天沉迷于游戏“打地鼠”.  每当朋友们劝他别太着迷游戏,应该好好工作的时候,他总是说,我是威威猫,猫打老鼠就是我的工作!  无话可说...    我们知道,打地鼠是一款经典小游戏,规则很简单:每隔一个时间

HDU 4540 威威猫系列故事——打地鼠 (DP)

威威猫系列故事——打地鼠 Time Limit: 300/100 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 1642    Accepted Submission(s): 807 Problem Description 威威猫最近不务正业,每天沉迷于游戏“打地鼠”. 每当朋友们劝他别太着迷游戏,应该好好工作的时候,他总是说,我是威威猫,猫打老鼠就是我的工作! 无话可说...

HDU - 4526 威威猫系列故事――拼车记 (DP)

Description 话说威威猫有一次去参加比赛,虽然学校离比赛地点不太远,但威威猫还是想坐出租车去.大学城的出租车总是比较另类,有"拼车"一说,也就是说,你一个人坐车去,还是一堆人一起,总共需要支付的钱是一样的(每辆出租上除司机外最多坐下4个人).刚好那天同校的一群Acmer在校门口扎堆了,大家果断决定拼车去赛场. 问题来了,一辆又一辆的出租车经过,但里面要么坐满了乘客,要么只剩下一两个座位,众Acmer都觉得坐上去太亏了,威威猫也是这么想的. 假设N名Acmer准备拼车,此时为0

hdu4533 威威猫系列故事——晒被子

Problem Description 因为马拉松初赛中吃鸡腿的题目让不少人抱憾而归,威威猫一直觉得愧对大家,这几天他悄悄搬到直角坐标系里去住了. 生活还要继续,太阳也照常升起,今天,威威猫在第一象限晒了N条矩形的被子,被子的每条边都和坐标轴平行,不同被子的某些部分可能会叠在一起.这时候,在原点处突然发了场洪水,时间t的时候,洪水会蔓延到( t, t ),即左下角为( 0, 0 ) ,右上角为( t, t )的矩形内都有水. 悲剧的威威猫想知道,在时间t1, t2, t3 ... tx 的时候,

吉哥系列故事——临时工计划(dp)

吉哥系列故事——临时工计划 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 3046 Accepted Submission(s): 1197 Problem Description 俗话说一分钱难倒英雄汉,高中几年下来,吉哥已经深深明白了这个道理,因此,新年开始存储一年的个人资金已经成了习惯,不过自从大学之后他不好意思再向大人要压岁钱了,只能

HDU 1565&amp;1569 方格取数系列(状压DP或者最大流)

方格取数(2) Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 6206    Accepted Submission(s): 1975 Problem Description 给你一个m*n的格子的棋盘,每个格子里面有一个非负数. 从中取出若干个数,使得任意的两个数所在的格子没有公共边,就是说所取数所在的2个格子不能相邻,并且取出的