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 ...
随机推荐
- Mac使用Docker-machine訪问docker publish port
Step 1.Export the port in your container(docker-machine or boot2docker) 首先,要保证你公布port的image已经run起来了. ...
- js28--适配器模式
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...
- visibility-控件的显示跟隐藏设置
在Android开发中,大部分控件都有visibility这个属性,其属性有3个 visible:可见 invisible:不可见,但是会占据原来的位置 gone:不可见,也不会占据原来的位置 可见( ...
- .NET Entity Framework入门操作
Entity Framework是微软借鉴ORM思想开发自己的一个ORM框架. ORM就是将数据库表与实体对象(相当于三层中的Model类)相互映射的一种思想. 最大的优点就是非常方便的跨数据库平台. ...
- C语言的多行宏定义
一.多行宏定义的使用 最近在跟STM32L011K4T6低功耗的源代码,发现使用了多行的宏定义来封装函数,记得之前把\给删除掉,编译程序就一直报错. \是续行操作符,也就是宏定义一行写不完,需要多行写 ...
- 洛谷 P2978 [USACO10JAN]下午茶时间Tea Time
P2978 [USACO10JAN]下午茶时间Tea Time 题目描述 N (1 <= N <= 1000) cows, conveniently numbered 1..N all a ...
- Codeforces Round #277.5 解题报告
又熬夜刷了cf,今天比正常多一题.比赛还没完但我知道F过不了了,一个半小时贡献给F还是没过--应该也没人Hack.写写解题报告吧= =. 解题报告例如以下: A题:选择排序直接搞,由于不要求最优交换次 ...
- windows系统自带工具
辅助功能向导:单击"開始→执行",在弹出的对话框中输入:accwiz 计算器:单击"開始→执行",在弹出的对话框中输入:calc 字符影射表:单击"開 ...
- 90.#define高级用法
define把参数变成字符串 #define f(x) printf("%s",#x); define连接两个字符串 #define a(x) a##x define把参数变成字符 ...
- 关于程序中delay函数带来的繁琐问题
导致“滴滴”声音不准确的原因是因为,串口屏幕发送信息的时候会有delay() 的延迟. 得到的教训就是,无论在什么地方,最好都不要加delay的延迟.否则含有delay的子 函数加入到其他模块中,就会 ...