hdu-5673 Robot(默次金数)】的更多相关文章

题目链接: Robot Time Limit: 12000/6000 MS (Java/Others)  Memory Limit: 65536/65536 K (Java/Others) 问题描述 有一个机器人位于坐标原点上.每秒钟机器人都可以向右移到一个单位距离,或者在原地不动.如果机器人的当前位置在原点右侧,它同样可以 向左移动单位距离.一系列的移动(左移,右移,原地不动)定义为一个路径.问有多少种不同的路径,使得nn秒后机器人仍然位于坐标原点? 答案可能很大,只需输出答案对1,000,0…
分析: 注:然后学了一发线性筛逆元的姿势 链接:http://blog.miskcoo.com/2014/09/linear-find-all-invert #include<iostream> #include<algorithm> #include<set> #include<vector> #include<queue> #include<cstdlib> #include<cstdio> #include<c…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5673 分析: 这道题是一道裸的默慈金数,比较容易想到的是用卡特兰数来做.不了解的可以先学习一下. 卡特兰数:http://www.cnblogs.com/yaoyueduzhen/p/5456490.html 默慈金数:http://www.cnblogs.com/yaoyueduzhen/p/5456530.html 记路径长度为nn,那么机器人最多向右走⌊​n/2​​⌋步并向左走⌊​n/2​​⌋…
Problem 有一个\(1*n\)的矩阵,固定第一个数为\(1\),其他填正整数, 且相邻数的差不能超过\(1\),求方案数. \(n\le 10^6\) Solution 容易发现答案是\(f_n=f_{n-1}*3-g_{n}\). 其中\(g_i\)表示从\((0,0)\)走到\((i,0)\)可以向上,向下向右走一格,但是只能在第一象限的方案数. 然后这个显然可以用 组合数 + 卡特兰数 推一波:\[\sum_{i=1}^{\frac{n}{2}}\binom{n}{2i}Catala…
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5673 题意: 有一个机器人位于坐标原点上.每秒钟机器人都可以向右移到一个单位距离,或者在原地不动.如果机器人的当前位置在原点右侧,它同样可以向左移动单位距离.一系列的移动(左移,右移,原地不动)定义为一个路径.问有多少种不同的路径,使得n秒后机器人仍然位于坐标原点?答案可能很大,只需输出答案对1,000,000,007取模. 分析: 最终回到原点说明向左和向右走的步数相同,假设一共走了i步,那么左…
Robot Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Problem Description There is a robot on the origin point of an axis.Every second, the robot can move right one unit length or do nothing.If the robot is on the…
先推荐一个关于卡特兰数的博客:http://blog.csdn.net/hackbuteer1/article/details/7450250. 卡特兰数一个应用就是,卡特兰数的第n项表示,现在进栈和出栈的次数都是n次,问最后栈空的合法序列的个数.其他例子见上面这个博客. 那么关于这个题目,我们先选出i次右移的(相当于进栈)次数,i次左移的(相当于出栈)次数,那么当前对答案做出的贡献就是C(n,2*i)*cat[i],枚举所有的i计算出答案即可. 代码如下: #include <stdio.h>…
Robot 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5673 Description There is a robot on the origin point of an axis.Every second, the robot can move right one unit length or do nothing.If the robot is on the right of origin point,it can also move…
#include<bits/stdc++.h> #define mod 1000000007 using namespace std; typedef long long ll; ll moni[1000005]; ll exgcd(ll a, ll b, ll &x, ll &y) {     if (b == 0)     {         x = 1;         y = 0;         return a;     }     ll r = exgcd(b,…
1. 素数/质数 只能被2或者本身整除的正整数. 2. 默尼森数 P是素数且M也是素数,并且满足等式M=2^P-1,则称M为默尼森数. 编程小要求: 输出前5个默尼森数 1)最外层循环找素数 中间层循环对已有素数表找默尼森数 内层循环对某个素数检查M=2^P-1 # -*- coding: cp936 -*- from math import sqrt # 素数初始化 p=[] # 默尼森数表初始化 mns=[] def is_sushu(x): if x <= 1: return False…