Facebook Hacker Cup 2015 Round 1--Winning at Sports(动态规划)
题意:你和一个朋友玩足球游戏,分数从0-0開始,终于你总是赢。而且你主要有两种方式赢,第一种stressFree方式你肯定要进第一个球而且总是比你的朋友分数高,另外一种stressFull方式除了你的朋友达到终于分数时。在游戏中你不可能比你的朋友分数高。
给出一个比分。请分别输出在两种情况下你能赢的方式。
题解:相似于LCS。由于球仅仅能一个一个地进,所以给出终于比分,如果a:b,上一个比分仅仅可能是a-1:b,或者a:b-1。
非常easy写出在stressFree时的动态方程。
1. 设dp_free[i][j]为比分为i:j的全部方式数目。显然i > j。
2. 若i = j+1,则dp_free[i][j] = dp_free[i][j-1];若i > j+1,则dp_free[i][j] = dp_free[i][j-1]+dp_free[i-1][j]。
相同如果stressFull方式下的最后比分为a:b,则比分肯定是由b:b再全部由你进球所造成的。
1. 设dp_full[i]为你的分数始终不超过你朋友终于分数为i:j的全部方式数目,显然i <= j。
2. 若i = j,则dp_full[i][j] = dp_full[i-1][j]。若i < j。则dp_full[i][j] = dp_full[i-1][j]+dp_full[i][j-1]。
代码例如以下:
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define maxN 2005
#define maxP 1000000007
int dp_free[maxN][maxN];
int dp_full[maxN][maxN];
int DP()
{
memset(dp_free,0,sizeof(dp_free));
memset(dp_full,0,sizeof(dp_full));
dp_free[1][0] = 1;
dp_full[0][0] = 1;
for(int i = 0;i < maxN;i++)
{
for(int j = 0;j < maxN;j++)
{
if(i > j)
{
if(j >= 1)
{
dp_free[i][j] = dp_free[i][j-1];
}
if(i >= 1&&i-1 > j)
{
dp_free[i][j] = (dp_free[i][j]+dp_free[i-1][j])%maxP;
}
}
else
{
if(i >= 1)
{
dp_full[i][j] = dp_full[i-1][j];
}
if(j >= 1&&i <= j-1)
{
dp_full[i][j] = (dp_full[i][j]+dp_full[i][j-1])%maxP;
}
}
}
}
return 0;
}
int main()
{
freopen("winning_at_sports.txt","r",stdin);
freopen("out1.txt","w",stdout);
int T;
int a,b;
char c;
DP();
scanf("%d",&T);
for(int i = 1;i <= T;i++)
{
scanf("%d%c%d",&a,&c,&b);
printf("Case #%d: %d %d\n",i,dp_free[a][b],dp_full[b][b]);
}
return 0;
}
Facebook Hacker Cup 2015 Round 1--Winning at Sports(动态规划)的更多相关文章
- Facebook Hacker Cup 2015 Round 1--Corporate Gifting(树动态规划)
原标题:https://www.facebook.com/hackercup/problems.php?pid=759650454070547&round=344496159068801 题意 ...
- Facebook Hacker Cup 2015 Round 1--Homework(筛选法求素数)
题意:给定A,B,K(A<=B)三个数,问在[A,B]范围内的数素数因子个数为K的个数. 题解:典型的筛选法求素数.首先建立一个保存素数因子个数的数组factorNum[],以及到n为止含有素数 ...
- Facebook Hacker Cup 2014 Qualification Round 竞赛试题 Square Detector 解题报告
Facebook Hacker Cup 2014 Qualification Round比赛Square Detector题的解题报告.单击这里打开题目链接(国内访问需要那个,你懂的). 原题如下: ...
- 51Nod 1182 完美字符串(字符串处理 贪心 Facebook Hacker Cup选拔)
1182 完美字符串 题目来源: Facebook Hacker Cup选拔 基准时间限制:1 秒 空间限制:1 ...
- Codeforces Round VK Cup 2015 - Round 1 (unofficial online mirror, Div. 1 only)E. The Art of Dealing with ATM 暴力出奇迹!
VK Cup 2015 - Round 1 (unofficial online mirror, Div. 1 only)E. The Art of Dealing with ATM Time Lim ...
- Facebook Hacker Cup 2014 Qualification Round
2014 Qualification Round Solutions 2013年11月25日下午 1:34 ...最简单的一题又有bug...自以为是真是很厉害! 1. Square Detector ...
- VK Cup 2015 - Round 2 (unofficial online mirror, Div. 1 only) E. Correcting Mistakes 水题
E. Correcting Mistakes Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/problemset ...
- VK Cup 2015 - Round 1 -E. Rooks and Rectangles 线段树最值+扫描线
题意: n * m的棋盘, k个位置有"rook"(车),q次询问,问是否询问的方块内是否每一行都有一个车或者每一列都有一个车? 满足一个即可 先考虑第一种情况, 第二种类似,sw ...
- VK Cup 2015 - Round 2 (unofficial online mirror, Div. 1 only) B. Work Group 树形dp
题目链接: http://codeforces.com/problemset/problem/533/B B. Work Group time limit per test2 secondsmemor ...
随机推荐
- worktools-mmx 添加编译模块
1,添加模块到mmx.py文件 1>vim /home/zhangshuli/git/vanzo_team/xulei/mmx.py 2>按照格式"Gallery2": ...
- 动态库dll使用module.def文件导出函数(像静态库一样使用)
1.新建文件module.def. 2.动态库工程上右键->属性->链接器->输入->模块定义文件编辑它写入module.def 3.下面为module.def实例(smart ...
- ArcGIS Engine 线段绘制
转自ArcGIS Engine 线段绘制研究 基本步骤 构建形状 1. 创建 IPoint IPoint m_Point = new PointClass(); m_Point.PutCoords(x ...
- Arch Linux下配置Samba
本文记录笔者配置Samba的过程,供用于自用. sudo pacman -S samba sudo vim /etc/samba/smb.conf 添加以下内容 [global] dns pro ...
- 3.lombok系列3:lombok的实验类特性
转自:https://blog.csdn.net/54powerman/article/details/72516755 lombok除了已经推荐使用的基本功能,还维护了一个创新型的注解,有些功能有违 ...
- 1.1 Introduction中 Apache Kafka™ is a distributed streaming platform. What exactly does that mean?(官网剖析)(博主推荐)
不多说,直接上干货! 一切来源于官网 http://kafka.apache.org/documentation/ Apache Kafka™ is a distributed streaming p ...
- bootstrap tab页
---恢复内容开始--- <!DOCTYPE html> <html> <head> <title>Bootstrap 实例</title> ...
- JS概述
从Asp.NET跨越到JavaScript.这既是一个新的领域也是一个非常熟悉的地方,新是由于不知道什么是JavaScript,首先来了解一下什么是JavaScript. ...
- js进阶 14-5 $.getScript()和$.getJSON()方法的作用是什么
js进阶 14-5 $.getScript()和$.getJSON()方法的作用是什么 一.总结 一句话总结:$.getScript()和$.getJSON()方法专门用来加载JS/JSON文件(远程 ...
- 最大公约数最小公倍数 (例:HDU2028 Lowest Common Multiple Plus)
也称欧几里得算法 原理: gcd(a,b)=gcd(b,a mod b) 边界条件为 gcd(a,0)=a; 其中mod 为求余 故辗转相除法可简单的表示为: int gcd(int a, int b ...