7.16_C题
来源:互联网 发布:张艺兴和sm知乎 编辑:程序博客网 时间:2024/05/26 12:03
题目链接:http://code.bupt.edu.cn/problem/p/426/
题意应该很好懂,只能是成波浪形的数,我们假设g[N]代表的事N个数的时候,第一个数比第二个数大的波浪形数(形如“ ∨∨∨∨”)的个数。由于在此种情况下,符合“∧∧∧∧”和“ ∨∨∨∨”这样的数目应该是相等的,所以我们首先算出g[n]之后再乘2,就OK了,
有了g[N],我们还可以得到如下dp方程:g[i]=c(i-1,j)*g[j]*g[i-j-1](j:0-i-1,每次+2);
代码如下:
#include <iostream>#include <cstdio>#include <cstring>#define N 4222using namespace std;int c[N][N];int g[N];int main(){ int n,p; while(~scanf("%d%d",&n,&p)) { memset(g,0,sizeof(g)); for(int i=0;i<=n;i++) { c[i][0]=1; c[i][i]=1; } for(int i=2;i<=n;i++) for(int j=1;j<i;j++) c[i][j]=(c[i-1][j-1]%p+c[i-1][j]%p)%p; g[0]=1%p,g[1]=1%p;g[2]=1%p,g[3]=2%p; for(int i=4;i<=n;i++) { for(int j=0;j<=i-1;j+=2) { g[i]=(g[i]+((long long)c[i-1][j]%p*(long long)g[j]%p*(long long)g[i-j-1]%p)%p)%p; } } g[n]=(g[n]*2)%p; printf("%d\n",g[n]); } return 0;}
0 0
- 7.16_C题
- 4399_C++笔试题
- 2016 Winter Training Day #1_C题_hdoj 1009(贪心)
- yizhongqishi的线上错题本_c/c++篇
- 2015_蓝桥_C/C++_B组_2题
- 网易2018内推笔试题_操作序列_C++
- 2018秋招笔试题_韩信点兵_C++
- NYIST_17软件_C语言测试 编程题题解
- 趣味_C#
- 07.02_c
- 二分_C
- 网易2018内推_算法工程师_笔试题_交错01串_C/C++
- 20091009_C#_GeneratePWD
- 单件模式_C++
- POJ 2602_C
- 基础_C# 数组
- 基础_C# 字符串
- 基础_C# 事件
- 7.16_A题
- C语言位运算符
- 【iOS】文件下载小记
- Cocos2d-x中2.x和3.x的粒子系统的比较
- 7.16_B题
- 7.16_C题
- Codeforces Round #256 (Div. 2)
- 海边到黄昏就的的减肥计划所见即所得圣诞节(Q977177223)
- HDU-2929-Bigger is Better
- 网络延时,抖动,丢包对voip和视频业务QoS的影响
- 应该掌握的协议
- 7.16_D题
- Codeforces Round #256 (Div. 2)总结
- Codeforces Round #256 (Div. 2/A)/Codeforces448A_Rewards(水题)