hdu5673-Robot
题目:
http://acm.hdu.edu.cn/showproblem.php?pid=5673
好久没打BC,当时这场过了3题,hack了一个,马马虎虎吧,因为前三个题确实不难。
这个是那场的第四个题,其实难度不大。结果是ΣC(n,2i)*catalan[i],C(n,2i)好理解。
卡特兰数吗。。。。其实也不太负责,因为卡特兰数经常用在括号匹配啊啥的情况。。。参见这个吧。。
http://blog.csdn.net/hongchangfirst/article/details/8766529
http://blog.chinaunix.net/uid-26456800-id-3462158.html
当然,这题数据量比较大,建议用递推公式,涉及到求逆元,费马小定理+快速幂可以。
几个递推:Catalan[i] = ((4*i-2)/(i+1))*Catalan[i-1] , C(n, i) = ((n-i+1)/i)*C(n, i-1)。
至于网上人用的这个线性的。。。。inv[i]=(mod-mod/i)*inv[mod%i]%mod;。。。还没研究明白。。
代码:
#include <bits/stdc++.h> using namespace std;
const int maxn = + ;
typedef long long int64;
const int64 mod = + ; int64 inv[maxn];
int64 catalan[maxn], c[maxn]; int64 fpow( int x, int64 p ){
//cout << x << " " << p << endl;
int64 ans = , sum = x;
while(p){
if(p&)
ans = (ans * sum)%mod;
sum = (sum * sum)%mod;
p >>= ;
} return ans;
} void Init(void){
inv[] = ;
for( int i = ; i < maxn; ++i ){
//inv[i]=(mod-mod/i)*inv[mod%i]%mod;
inv[i] = fpow(i, mod-);
} catalan[] = catalan[] = ;
for( int i = ; i < maxn; ++i ){
int a = *i-, b = i+;
catalan[i] = catalan[i-]*a%mod*inv[b]%mod;
}
//cout << catalan[3] << " " << catalan[4] << " " << catalan[5] << endl;
} void solve(int n){
int64 ans = ; c[] = ;
for( int i = ; i <= n; ++i ){
c[i] = (n-i+)*c[i-]%mod*inv[i]%mod;
} for( int i = ; i* <= n; ++i ){
ans = (ans + c[*i]*catalan[i]%mod)%mod;
}
printf("%I64d\n", ans);
} int main(void){
int T;
scanf("%d", &T);
Init(); while(T--){
int n;
scanf("%d", &n); solve(n);
} return ;
}
hdu5673-Robot的更多相关文章
- hdu5673 Robot 卡特兰数+组合数学+线性筛逆元
Robot Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Subm ...
- hdu-5673 Robot(默次金数)
题目链接: Robot Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) 问题描述 ...
- HDU5673 Robot 默慈金数
分析: 注:然后学了一发线性筛逆元的姿势 链接:http://blog.miskcoo.com/2014/09/linear-find-all-invert #include<iostream& ...
- hdu5673 Robot 卡特兰数 / 默慈金数
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5673 分析: 这道题是一道裸的默慈金数,比较容易想到的是用卡特兰数来做.不了解的可以先学习一下. 卡特 ...
- Robot(hdu5673)
Robot Accepts: 92 Submissions: 188 Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 65536/65536 ...
- Robot Framework用户手册 (版本:3.0)
版权信息:诺基亚网络和解决中心 本翻译尊重原协议,仅用于个人学习使用 1.开始: 1.1 介绍: Robot Framework是一个基于Python的,为终端测试和验收驱动开发(ATDD)的可扩展的 ...
- selenium webdriver 右键另存为下载文件(结合robot and autoIt)
首先感谢Lakshay Sharma 大神的指导 最近一直在研究selenium webdriver右键菜单,发现selenium webdriver 无法操作浏览器右键菜单,如图 如果我想右键另存为 ...
- RIDE -- Robot Framework setup
RobotFramework 是一款基于python 的可以实现关键字驱动和数据驱动并能够生成比较漂亮的测试报告的一款测试框架 这里使用的环境是 python-2.7.10.amd64.msi RID ...
- [8.2] Robot in a Grid
Imagine a robot sitting on the upper left corner of grid with r rows and c columns. The robot can on ...
- Robot Framework自动化测试 ---视频与教程免费分享
当我第一次使用Robot Framework时,我是拒绝的.我跟老大说,我拒绝其实对于习惯了代码的自由,所以讨厌这种“填表格”式的脚本.老大说,Robot Framework使用简单,类库丰富,还可以 ...
随机推荐
- Linux Shell 小知识
${} ——变量替换 通常 $var 与 ${var} 没有区别,但是用 ${} 会比较精确的界定变量名称的范围. name='Ace' echo "result1: my name is ...
- HDU_1532_最大流
Drainage Ditches Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- hibernate+struts2
一.环境 添加struts2和hibernate的jar包.创建web.xml(配置struts的过滤器).struts2.xml和hibernate.cfg.xml(设置一些数据库参数). 二.创建 ...
- C# 获取表中最大值
; if (db.LPicture.Any()) { // LPicture Newmode = db.LPicture.Where(n => ).FirstOrDefault(); start ...
- js弹开页面并调用方法
每次重新写一个功能的时候,都能发现以前写的并不太好,都可以改进,奇怪的是我还是我,为什么曾经的我就想不起来要这么写,比如下面两段代码 历史代码: if (infoTablePage != null) ...
- Python学习笔记——Matplot库
https://www.cnblogs.com/laoniubile/p/5893286.html 一.基本指令 import matplotlib.pyplot as plt plt.figure ...
- 在引入的css或者js文件后面加参数的作用
有时候可能会遇到js或者css文件引用后传递参数: css和js带参数(形如.css?v=与.js?v=) <script type=”text/javascript” src=”jb51.js ...
- python爬虫12 | 爸爸,他使坏,用动态的 Json 数据,我要怎么搞?
在前面我们玩了好多静态的 HTML 想必你应该知道怎么去爬这些数据了 但还有一些常见的动态数据 比如 商品的评论数据 实时的直播弹幕 岛国动作片的评分 等等 这些数据是会经常发生改变的 很多网站就会用 ...
- socket 网络编程笔记 一
初始socket模块 Serve端代码 import socket sk = socket.socket() #默认为TCP连接 """socket 里面两个方法 fam ...
- SCU Censor
Censor frog is now a editor to censor so-called sensitive words (敏感词). She has a long text p . Her j ...