https://www.hackerrank.com/contests/w1/challenges/volleyball-match

此题不错,首先可以看出是DP,S(x, y)= S(x - 1, y) + S(x, y - 1)。然后比赛结束状态需要认真判断。三来,最后数据量很大(接近10^9)远超一般DP的数据量,分配数组都不行,里面是有规律的。下面是大数据失败的代码:

#include <vector>
#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std; vector<vector<int> > ma;
int MOD = 1000000007; bool validEnd(int a, int b) {
// a >= b
if (a < 25)
return false;
if (a == 25) {
return ((a - b) >= 2);
}
else {
return ((a - b) == 2);
}
} bool valid(int a, int b) {
// a >= b
if (a < 0 || b < 0)
return false;
if (a <= 25 && b <= 25)
return true;
else
return ((a - b) <= 2);
} int getCount(int a, int b, bool first) {
if (!valid(a, b)) {
return 0;
}
if (!first && validEnd(a, b)) {
return 0;
}
if (ma[a][b] != -1) {
return ma[a][b];
}
ma[a][b] = (getCount(a - 1, b, false) + getCount(a, b - 1, false)) % MOD;
return ma[a][b];
} int main() {
int a, b;
cin >> a >> b;
if (a < b)
swap(a, b);
if (!validEnd(a, b)) {
cout << 0 << endl;
return 0;
}
ma.resize(a + 1);
for (int i = 0; i < ma.size(); i++) {
ma[i].resize(b + 1, -1);
}
ma[0][0] = 1;
int r = getCount(a, b, true);
cout << r << endl;
}

正确做法是观察到,大于25的比赛结束状态都是由24:24经由一个一个平局过来的,没经过一次增加一倍。这样只要改写main函数基本就行了,主要pow由于次数太高,会远超long的值域,需要改写每次都MOD一下。

int pw(int k) {
if (k == 0)
return 1;
if (k == 1)
return 2;
int q = pw(k / 2);
q = (1LL * q * q) % MOD;
if (k % 2 == 1)
return (q + q) % MOD;
else
return q;
} int main() {
int a, b;
cin >> a >> b;
if (a < b)
swap(a, b);
if (!validEnd(a, b)) {
cout << 0 << endl;
return 0;
}
ma.resize(26);
for (int i = 0; i < ma.size(); i++) {
ma[i].resize(26, -1);
}
ma[0][0] = 1;
int r = 0;
if (a == 25) {
r = getCount(a, b, true);
}
else {
r = getCount(24, 24, true);
r = ((int64_t) r * pw(b - 24)) % MOD;
}
cout << r << endl;
}

  

*[hackerrank]Volleyball Match的更多相关文章

  1. CF95C Volleyball

    题意翻译 给出一个图,双向边,边上有权值代表路的距离,然后每个点上有两个值,t,c,t代表能从这个点最远沿边走t,且不能在半路下来,花费是c 现在告诉你起点终点,问最少的花费 点个数1000,边个数1 ...

  2. Codeforces 96D Volleyball(最短路径)

    Petya loves volleyball very much. One day he was running late for a volleyball match. Petya hasn't b ...

  3. Codeforces 95C Volleyball(最短路)

    题目链接:http://codeforces.com/problemset/problem/95/C C. Volleyball time limit per test 2 seconds memor ...

  4. KDD2016,Accepted Papers

    RESEARCH TRACK PAPERS - ORAL Title & Authors NetCycle: Collective Evolution Inference in Heterog ...

  5. Elasticsearch 5.0 中term 查询和match 查询的认识

    Elasticsearch 5.0 关于term query和match query的认识 一.基本情况 前言:term query和match query牵扯的东西比较多,例如分词器.mapping ...

  6. SQL Server-聚焦查询计划Stream Aggregate VS Hash Match Aggregate(二十)

    前言 之前系列中在查询计划中一直出现Stream Aggregate,当时也只是做了基本了解,对于查询计划中出现的操作,我们都需要去详细研究下,只有这样才能对查询计划执行的每一步操作都了如指掌,所以才 ...

  7. Java compiler level does not match解决方法

    从别的地方导入一个项目的时候,经常会遇到eclipse/Myeclipse报Description  Resource Path Location Type Java compiler level d ...

  8. 钉钉开放平台demo调试异常问题解决:hostname in certificate didn't match

    今天研究钉钉的开放平台,结果一个demo整了半天,这帮助系统写的也很难懂.遇到两个问题: 1.首先是执行demo时报unable to find valid certification path to ...

  9. .net正则表达式大全(.net 的 System.Text.RegularExpressions.Regex.Match()方法使用)

    正则表达式的本质是使用一系列特殊字符模式,来表示某一类字符串.正则表达式无疑是处理文本最有力的工具,而.NET的System.dll类库提供的System.Text.RegularExpression ...

随机推荐

  1. EasyUI DataGrid分页数据绑定

    记录东西感觉很痛苦,总结东西很痛苦,麻烦,不过为了下次的方便和知识的牢固以后要坚持总结. EasyUI DataGrid分页数据绑定 在解决方案中新建两个文件FormMain.aspx(html也可以 ...

  2. “~/Views/Home/Text.aspx”处的视图必须派生自 ViewPage、ViewPage<TModel>、ViewUserControl 或 ViewUserControl<TModel>。

    在MVC架构中使用aspx页面,需要在Text.aspx中开头加入如下代码: <%@ Page Language="C#" Inherits="System.Web ...

  3. linux命令详解之chkconfig命令使用方法

    介绍一个linux常用命令,chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. 使用语法:c ...

  4. 跟着PHP100第一季学写一个CMS(11-20)

    PS.刚发现IE并不兼容,有点悲剧  cms1.1密码处理 1.小知识:sha1($_answer) //加密为40位,不知道能不能破解 2.小知识:mysql_real_escape_string( ...

  5. aspx返回json数据

    JQuery.getJSON 从aspx页面返回JSON数据 . -- ::| 分类: asp.net |举报|字号 订阅 . 发送请求的WebForm1.aspx <%@ Page Langu ...

  6. WPF自定义控件(二)——TextBox

    和之前一样,先来看看效果: 这个TextBox可设置水印,可设置必填和正则表达式验证. 验证?没错,就是验证! 就是在输入完成后,控件一旦失去焦点就会自动验证!会根据我开放出来的“是否可以为空”属性进 ...

  7. MyEclipse管理部署Maven项目 供调试

    今天对Maven的一个项目弄到头大,用MyEclipse10.x做了半天都没有部署成功. 后来发现用maven自己的maven4myelipse插件配置一下Goals:tomcat:run就好了,其他 ...

  8. Teradata 的rank() 和 row_number() 函数

    Teradata数据库中也有和oracle类似的分析函数,功能基本一样.示例如下: RANK() 函数   SELECT * FROM salestbl ORDER BY 1,2; storeid p ...

  9. stringlist

    #ifndef _STRINGLIST_HPP_#define _STRINGLIST_HPP_ #include "../global.hpp"#include <type ...

  10. Setting composer minimum stability for your application

    Do you have a confusion of how do you determine the stability when using composer dependency manager ...