HZOJ 题
首先对于n<=100的点,直接暴力dp,f[i][j][k]表示时间为i,在i,j位置的方案数,枚举转移即可,期望得分40。
if(n<=)
{
if(t==)
{
f[][][]=;
for(int i=;i<=n;i++)
for(int x=;x<=;x++)
for(int y=;y<=;y++)
f[i][x][y]=((f[i-][x-][y]+f[i-][x+][y])%mod+(f[i-][x][y-]+f[i-][x][y+])%mod)%mod;
printf("%d\n",f[n][][]);
return ;
}
if(t==)
{
f[][][]=;
for(int i=;i<=n;i++)
for(int x=;x<=;x++)
f[i][x][]=(f[i-][x-][]+f[i-][x+][])%mod;
printf("%d\n",f[n][][]);
return ;
}
if(t==)
{
f[][][]=;
for(int i=;i<=n;i++)
for(int x=;x<=;x++)
for(int y=;y<=;y++)
if(x==||y==)
f[i][x][y]=((f[i-][x-][y]+f[i-][x+][y])%mod+(f[i-][x][y-]+f[i-][x][y+])%mod)%mod;
printf("%d\n",f[n][][]);
return ;
}
if(t==)
{
f[][][]=;
for(int i=;i<=n;i++)
for(int x=;x<=n+;x++)
for(int y=;y<=n+;y++)
f[i][x][y]=((f[i-][x-][y]+f[i-][x+][y])%mod+(f[i-][x][y-]+f[i-][x][y+])%mod)%mod;
printf("%d\n",f[n][][]);
return ;
}
}
代码实现
type0:这里
type1:显然卡特兰数……
type2:居然是个dp
f[i]表示走了i步回到原点的方案数,枚举第一次回到原点时走过的步数j(为了存在合法解,j为偶数),则此时方案数为f[i-j]*catalan(j/2-1),复杂度为O(n^2)所以最大范围只出到1000.
type3:
枚举横向移动了多少步.横向移动i步时(为了存在合法解,i必须是偶数),方案数为C(n,i)*catalan(i/2)*catalan((n-i)/2)
可以这样考虑:横向移动了i步,因为只能在第一象限,所以横向是一个卡特兰数,同理纵向也是一个卡特兰数。
#include<iostream>
#include<cstring>
#include<cstdio>
#define LL long long
using namespace std;
const int mod=1e9+;
int n,t;
int f[][][];
LL f1[];
LL jc[];
LL poww(LL a,int b,int mod)
{
LL ans=;
while(b)
{
if(b&)ans=ans*a%mod;
a=a*a%mod;
b=b>>;
}
return ans;
}
LL C(int n,int m)
{
if(m>n)return ;
if(!m)return ;
return jc[n]*poww(jc[m],mod-,mod)%mod*poww(jc[n-m],mod-,mod)%mod;
}
LL H(int i)
{
return C(*i,i)*poww(i+,mod-,mod)%mod;
}
inline int read();
signed main()
{
n=read(),t=read();
if(n<=)
{
if(t==)
{
f[][][]=;
for(int i=;i<=n;i++)
for(int x=;x<=;x++)
for(int y=;y<=;y++)
f[i][x][y]=((f[i-][x-][y]+f[i-][x+][y])%mod+(f[i-][x][y-]+f[i-][x][y+])%mod)%mod;
printf("%d\n",f[n][][]);
return ;
}
if(t==)
{
f[][][]=;
for(int i=;i<=n;i++)
for(int x=;x<=;x++)
f[i][x][]=(f[i-][x-][]+f[i-][x+][])%mod;
printf("%d\n",f[n][][]);
return ;
}
if(t==)
{
f[][][]=;
for(int i=;i<=n;i++)
for(int x=;x<=;x++)
for(int y=;y<=;y++)
if(x==||y==)
f[i][x][y]=((f[i-][x-][y]+f[i-][x+][y])%mod+(f[i-][x][y-]+f[i-][x][y+])%mod)%mod;
printf("%d\n",f[n][][]);
return ;
}
if(t==)
{
f[][][]=;
for(int i=;i<=n;i++)
for(int x=;x<=n+;x++)
for(int y=;y<=n+;y++)
f[i][x][y]=((f[i-][x-][y]+f[i-][x+][y])%mod+(f[i-][x][y-]+f[i-][x][y+])%mod)%mod;
printf("%d\n",f[n][][]);
return ;
}
}
else
{
LL ans=;
jc[]=;for(int i=;i<=;i++)jc[i]=jc[i-]*i%mod;
if(t==)
{
int s,x,z,y;
for(s=;s<=n/;s++)
{
x=s;z=y=(n-s-x)/;
ans=(ans+jc[n]*poww(jc[s],mod-,mod)%mod*poww(jc[x],mod-,mod)%mod*poww(jc[z],mod-,mod)%mod*poww(jc[y],mod-,mod)%mod)%mod;
}
printf("%lld\n",ans%mod);
return ;
}
if(t==)
{
n=n/;ans=;
for(int i=n+;i<=*n;i++)ans=ans*i%mod;
ans=ans*poww(jc[n],mod-,mod);
printf("%lld\n",ans%mod);
return ;
}
if(t==)
{
f1[]=;
for(int i=;i<=n;i+=)
for(int j=;j<=i;j+=)
f1[i]=(f1[i]+*f1[i-j]*H(j/-)%mod)%mod;
printf("%lld\n",f1[n]%mod);
return ;
}
if(t==)
{
for(int i=;i<=n;i+=)
ans=(ans+C(n,i)*H(i/)%mod*H((n-i)/)%mod)%mod;
printf("%lld\n",ans);
return ;
}
}
}
inline int read()
{
int s=;char a=getchar();
while(a<''||a>'')a=getchar();
while(a>=''&&a<=''){s=s*+a-'';a=getchar();}
return s;
}
暴力和正解全在这里!!
HZOJ 题的更多相关文章
- java基础集合经典训练题
第一题:要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9)也不相同,每个字符串长度为10; 分析:*1.看到这个题目,或许你脑海中会想到很多方法,比如判 ...
- 【Java每日一题】20170106
20170105问题解析请点击今日问题下方的"[Java每日一题]20170106"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; ...
- 【Java每日一题】20170105
20170104问题解析请点击今日问题下方的"[Java每日一题]20170105"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; ...
- 【Java每日一题】20170104
20170103问题解析请点击今日问题下方的"[Java每日一题]20170104"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; ...
- 【Java每日一题】20170103
20161230问题解析请点击今日问题下方的"[Java每日一题]20170103"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; ...
- SQL面试笔试经典题(Part 1)
本文是在Cat Qi的原贴的基础之上,经本人逐题分别在MySql数据库中实现的笔记,持续更新... 参考原贴:http://www.cnblogs.com/qixuejia/p/3637735.htm ...
- 刷LeetCode的正确姿势——第1、125题
最近刷LeetCode比较频繁,就购买了官方的参考电子书 (CleanCodeHandbook),里面有题目的解析和范例源代码,可以省去非常多寻找免费经验分享内容和整理这些资料的时间.惊喜的是,里面的 ...
- AWS的SysOps认证考试样题解析
刚考过了AWS的developer认证,顺手做了一下SysOps的样题.以下是题目和答案. When working with Amazon RDS, by default AWS is respon ...
- AWS开发人员认证考试样题解析
最近在准备AWS的开发人员考试认证.所以特意做了一下考试样题.每道题尽量给出了文档出处以及解析. Which of the following statements about SQS is true ...
随机推荐
- jquery 获取图片宽高为0的问题
原理:页面加载完了,图片不一定加载完了. $(function(){ $("img").on("load",function(){ //核心 var w = $ ...
- Win7下设置WiFi热点
Win7下设置WiFi热点 今天研究了下Win7设置WIFI热点,Connectify神马的都是浮云~亲測可用,现拿出来分享下~ 1.点击"開始",再点击"执行" ...
- java-异常进阶-包的使用
一 finally 1.1 异常执行的顺序 package test; public class Test { public static void main(String[] args) { Dem ...
- List的深度序列化Demo
今天项目中出现了这个问题...就是使用一个List去进行其他的操作,生成一个新的List.但是却将原来的List的值也给改了...这应该是引用传递的问题,查了资料发现这是浅拷贝造成的.(ps:使用ad ...
- 洛谷P1315 [NOIP2011提高组Day2T3] 观光公交
P1315 观光公交 题目描述 风景迷人的小城Y 市,拥有n 个美丽的景点.由于慕名而来的游客越来越多,Y 市特意安排了一辆观光公交车,为游客提供更便捷的交通服务.观光公交车在第 0 分钟出现在 1号 ...
- pycharm 测试执行成功,但却无法成功生成测试报告(使用HTMLTestRunner)的解决办法
pycharm 测试执行成功,在对应的测试路径下确未生成测试报告.反复确认代码也是没有问题的,在网上查找了原因:简单的unittest运行是不执行main方法的.是允许方式问题. 于是在mian方法里 ...
- HDU 1724 自适应辛普森法
//很裸的积分题,直接上模板 #include<stdio.h> #include<math.h> int aa, bb; //函数 double F(double x){ - ...
- PCL配置即常见问题
1 下载 把与VS版本对应PCL的AllInOne包下载下来.要下对安装包,需要了解安装包的命名的含义,以下面的一个AllInOne包的名字为例. PCL-1.8.0-AllInOne-msvc ...
- Python3.7.4入门-4模块
4 模块 Python有一种方法可以把定义放在一个文件里,并在脚本或解释器的交互式实例中使用它们.这样的文件被称作 模块 :模块中的定义可以 导入 到其它模块或者 主 模块 模块是一个包含Python ...
- 项目管理知识图谱OR架构图
做项目管理,心中一定要有知识图谱,科学的知识储备+100%执行力=好的管理者. 德鲁克所言: 领导是“做正确的事”,管理是“把事做正确”.