[HackerCup Round1 3] Winning at Sports (动态规划)
题目链接:https://www.facebook.com/hackercup/problems.php?pid=688426044611322&round=344496159068801
题目大意:两种赢法,一种叫做stress-free,另外一种叫做stressful。问你给定最终成绩,stress-free和stressful的局数各有多少。
建立状态:dp[i][j]代表比分为i-j的时候,stress-free的局数,有状态转移:dp[i][j] = dp[i-1][j]+dp[i][j-1]
因为如果说比分为i-1:j的话,那么我们添加一盘比赛,给i-1添加一分的话,仍然符合stress-free。
同样i:j-1也是一样:因为i严格大于j,因此我们给j-1增加一分的话,对方的总盘数为j,因为i:j-1的时候,中间的过程始终满足i'>j-1',因此添加一分也不影响满足题意。
最终结果存在dp[a][b]中。
建立状态:f[i][j]代表比分为i-j的时候,i≥j的盘数。之所以这么做是因为其与题意要求等价。
状态转移方程不变,只是转移的边界变成了i≥j。
最终答案是f[b][b]
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std; const int MOD = **+;
const int MAX_N = ;
int dp[MAX_N][MAX_N];
int f[MAX_N][MAX_N];
int T;
int a,b; int main(){
// freopen("input.txt","r",stdin);
// freopen("output.txt","w",stdout);
memset(dp,,sizeof(dp));
memset(f,,sizeof(f));
for(int i=;i<=;i++){
dp[i][] = ;
}
for(int i=;i<=;i++){
for(int j=;j<i;j++){
dp[i][j] = (dp[i][j-]+dp[i-][j])%MOD;
}
}
for(int i=;i<=;i++){
f[i][] = ;
}
for(int i=;i<=;i++){
for(int j=;j<=i;j++){
f[i][j] = (f[i][j-]+f[i-][j])%MOD;
}
}
scanf("%d",&T);
for(int cases = ; cases <= T; cases++){
scanf("%d-%d",&a,&b);
printf("Case #%d: %d %d\n",cases,dp[a][b],f[b][b]);
}
return ;
}
[HackerCup Round1 3] Winning at Sports (动态规划)的更多相关文章
- [HackerCup Round1 2] Autocomplete (Trie)
题目链接:https://www.facebook.com/hackercup/problems.php?pid=313229895540583&round=344496159068801 题 ...
- Facebook Hacker Cup 2015 Round 1--Winning at Sports(动态规划)
原题:pid=688426044611322&round=344496159068801">https://www.facebook.com/hackercup/problem ...
- Facebook Hacker Cup 2015 Round 1--Corporate Gifting(树动态规划)
原标题:https://www.facebook.com/hackercup/problems.php?pid=759650454070547&round=344496159068801 题意 ...
- Luogu 2627 修建草坪 (动态规划Dp + 单调队列优化)
题意: 已知一个序列 { a [ i ] } ,求取出从中若干不大于 KK 的区间,求这些区间和的最大值. 细节: 没有细节???感觉没有??? 分析: 听说有两种方法!!! 好吧实际上是等价的只是看 ...
- HDU 1052 Tian Ji -- The Horse Racing【贪心在动态规划中的运用】
算法分析: 这个问题很显然可以转化成一个二分图最佳匹配的问题.把田忌的马放左边,把齐王的马放右边.田忌的马A和齐王的B之间,如果田忌的马胜,则连一条权为200的边:如果平局,则连一条权为0的边:如果输 ...
- 增强学习(三)----- MDP的动态规划解法
上一篇我们已经说到了,增强学习的目的就是求解马尔可夫决策过程(MDP)的最优策略,使其在任意初始状态下,都能获得最大的Vπ值.(本文不考虑非马尔可夫环境和不完全可观测马尔可夫决策过程(POMDP)中的 ...
- 简单动态规划-LeetCode198
题目:House Robber You are a professional robber planning to rob houses along a street. Each house has ...
- 动态规划 Dynamic Programming
March 26, 2013 作者:Hawstein 出处:http://hawstein.com/posts/dp-novice-to-advanced.html 声明:本文采用以下协议进行授权: ...
- 动态规划之最长公共子序列(LCS)
转自:http://segmentfault.com/blog/exploring/ LCS 问题描述 定义: 一个数列 S,如果分别是两个或多个已知数列的子序列,且是所有符合此条件序列中最长的,则 ...
随机推荐
- MVC5+EF6 (附加分页功能)
我们对之前的Views à Account à Index.cshtml 进行修改以完成今天的示例. 界面样式修改前: 下面对Views à Account à Index.cshtml进行如下修改: ...
- CentOS6.6 安装 Tengine 笔记
Tengine官网上有个非常简单的教程,中间并未涉及到一些常用的设置,所以仅供参考.一下午为本人的安装步骤及过程. 1.安装必要的编译环境好 由于Tengine安装需要使用源代码自行编译,所以在安装前 ...
- java 框架Nutz
http://nutzam.com/ Nutz 可以做什么? Dao -- 针对 JDBC 的薄封装,事务模板,无缓存 Ioc -- JSON 风格的配置文件,声明时切片支持 Mvc -- 注解风格的 ...
- eclipse新建web项目,运行后在tomcat安装目录下webapps中没有该项目
一.发现问题在eclipse中新建Dynamic Web Project,配置好本地的tomcat并写好代码后选择Run on Server,但运行后发现在tomcat的安装目录下的webapps并没 ...
- Lombok - 消除冗长的 java 代码
前言: 逛开源社区的时候无意发现的,用了一段时间,觉得还可以,特此推荐一下. lombok 提供了简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 java 代码.特别是相对于 ...
- 并行计算之Memory barrier(内存
本文转载自:http://name5566.com/4535.html 参考文献列表:http://en.wikipedia.org/wiki/Memory_barrierhttp://en.wiki ...
- Python try/except异常处理机制
1. use try, except, finally try: data=open('its.txt','w') print('its..', file=data) except: print('f ...
- android学习笔记28——Activity生命周期
Activity生命周期 Activity的活动状态由android已Activity栈的形式管理,当前活动的Activity位于栈顶.随着不同应用的运行,每个Activity都有可能从活动状态转入非 ...
- android studio提示unable to run mksdcard sdk
如题,android studio提示unable to run mksdcard sdk sudo apt-
- C#对数组去重
#region ArrayList的示例应用 /// 方法名:DelArraySame /// 功能: 删除数组中重复的元素 /// </summary> /// <param na ...