HDU 4504 威威猫系列故事——篮球梦
来源:互联网 发布:js 语音波形图 编辑:程序博客网 时间:2024/04/29 21:55
题目大意:对于当前局势:比分A : B,还剩T时间,我方有三种得分方式:得1分,得2分,得3分;对手每次只能得1分,每次进攻耗时15秒,不足15秒不得进攻。
鉴于前面的几题DP,所以一看到有想到DP了(为什么?为什么?因为我方得分方式描述很容易想到状态转移方程),那么根据计算,我方最多进攻20次,就算每次得3分,那也只是20*60的状态量,good~很容易就ko。
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>#include<algorithm>#define maxn using namespace std;long long dp[26][70]; //dp[i][j]代表我方第i轮得到j分的种类数 void init(){ memset(dp,0,sizeof(dp)); dp[1][1]=dp[1][2]=dp[1][3]=1; for(int i=2;i<=20;i++) { for(int 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]; } }}int main(){ int A,B,t; init(); //dp计算所有的可能性 while(~scanf("%d%d%d",&A,&B,&t)) { int k = t / 15; int ta = (k + 1)/2; int tb = k - ta; //这里坑了我好惨啊 if(ta==0) { if(A>B) puts("1"); //这里太坑了 else puts("0"); continue; } B += tb; int diff = B - A + 1; //分差 if(diff < 0) diff = 0; long long ans = 0; for(int i=diff;i<=ta*3;i++) { ans += dp[ta][i]; } printf("%I64d\n",ans); } system("pause"); return 0;}
- HDU 威威猫系列故事——篮球梦
- HDU 威威猫系列故事——篮球梦
- hdu 4504威威猫系列故事——篮球梦
- HDU 4504 威威猫系列故事——篮球梦
- HDU 4504 威威猫系列故事——篮球梦
- hdu 4504 威威猫系列故事——篮球梦 dp
- hdu 4504 威威猫系列故事——篮球梦 Dp
- HDU ACM 4504 威威猫系列故事——篮球梦->DP
- HDU-4504 威威猫系列故事——篮球梦
- HDU 4504 威威猫系列故事——篮球梦(dp)
- HDU4504 威威猫系列故事——篮球梦
- 1005 威威猫系列故事——篮球梦
- 威威猫系列故事——篮球梦
- 威威猫系列故事——篮球梦
- 威威猫系列故事——篮球梦
- 威威猫系列故事——篮球梦
- hdu4504威威猫系列故事——篮球梦
- hdu_4504_威威猫系列故事——篮球梦
- 在表达式中使用内置报表函数和聚合函数
- zoj 2956 Another Horizontally Visible Segments
- Hybrid优化策略分析
- deploy django with url prefix in nginx
- Android读取 meta_data元素的数据
- HDU 4504 威威猫系列故事——篮球梦
- 中序遍历和先序遍历/后序遍历构建二叉树
- C++"::"作用域运算符
- C++文件读写/怎么判断是否到了结尾
- HDU 1872稳定排序优先队列
- 堆和栈的区别
- 关于Qt4.3与vs2005的集成(自己留着学习)
- 使用FileInputStream和FileOutputStream实现图片反色
- 关于二分的心得