LG2467 地精部落
2024-09-05 07:40:30
题意
给出\(n\),求有几个\(W\)形的\(n\)的全排列(震荡)
思路
可以变求出第二个数比第一个数大的,再翻倍就好
设\(f[i][j]\)表示\(i\)个数中\(j\)个数不符合序列
转移时\(f[i][j]\)时,有三种情况
- 1.不变到\(f[i+1][j]\),只有一种插入方法:\(i\)为偶数时,插入到倒数第二个;\(i\)为奇数时,插入到最后
- 2.减少一个不符合的到\(f[i+1][j-1]\):将\(i+1\)插入到不符合序列的数前,共有\(j\)种
- 3.增加一个不符合的:将\(i+1\)插入到已经符合的数前,共有\(i-j\)种(\(i+1-(j-1)\))
所以就可以写一份极简的代码
#include <bits/stdc++.h>
int n,p;
int f[4205][4205];
int main(){
scanf("%d%d",&n,&p);
f[1][0]=1;
for (int i=1;i<n;i++)
for (int j=0;j<=i;j++){
f[i+1][j]=(f[i+1][j]+f[i][j])%p;
f[i+1][j+1]=(f[i+1][j+1]+1ll*f[i][j]*(i-j))%p;
if (j) f[i+1][j-1]=(f[i+1][j-1]+1ll*f[i][j]*j)%p;
}
printf("%d",(1ll*f[n][0]<<1)%p);
}
对了结果要模\(p\)
最新文章
- .net平台下获取高精度时间类
- debug和release之间的时间优化问题
- “Adobe Flash Player因过期而遭到阻止”的解决办法
- cocos2dx 2.x 骨骼动画优化
- org.apache.ibatis.reflection.ReflectionException
- HDU2648:Shopping(DKBR_hash)
- FKP,一套全栈框架,基于react、webpack、koa1、babel
- HW--漂亮度
- Linq/List/Array/IEnumerable等集合操作
- Python开发者现实版养成路线:从一无所知到无所不知
- Could not autowire. No beans of &#39;xxxx&#39; type found的错误
- document.getElementsByClassName返回的是一个数组
- (计算几何 线段判交) 51nod1264 线段相交
- JS获取今天和上个月的今天
- Second LearningConvolutionalNeuralNetworksforGraphs Experience
- mac下 配置homebrew 和java home
- jQuery.countdown倒计时插件
- HTML5 Canvas ( 圆和切点曲线的绘制 ) arc, arcTo
- 表单提交的3种方式,http post的contentType
- Thunder团队第五周 - Scrum会议5