题意

给出\(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\)

最新文章

  1. .net平台下获取高精度时间类
  2. debug和release之间的时间优化问题
  3. “Adobe Flash Player因过期而遭到阻止”的解决办法
  4. cocos2dx 2.x 骨骼动画优化
  5. org.apache.ibatis.reflection.ReflectionException
  6. HDU2648:Shopping(DKBR_hash)
  7. FKP,一套全栈框架,基于react、webpack、koa1、babel
  8. HW--漂亮度
  9. Linq/List/Array/IEnumerable等集合操作
  10. Python开发者现实版养成路线:从一无所知到无所不知
  11. Could not autowire. No beans of &#39;xxxx&#39; type found的错误
  12. document.getElementsByClassName返回的是一个数组
  13. (计算几何 线段判交) 51nod1264 线段相交
  14. JS获取今天和上个月的今天
  15. Second LearningConvolutionalNeuralNetworksforGraphs Experience
  16. mac下 配置homebrew 和java home
  17. jQuery.countdown倒计时插件
  18. HTML5 Canvas ( 圆和切点曲线的绘制 ) arc, arcTo
  19. 表单提交的3种方式,http post的contentType
  20. Thunder团队第五周 - Scrum会议5

热门文章

  1. Log4net采用外部配置文件和多记录器的方法
  2. CentOS7利用systemctl添加dotnet后台服务
  3. NLog Helpper日志帮助类配置和使用
  4. 一步一步搭建 .net core 应用
  5. Vue-img-preload
  6. EasyUI中的重要的控件和属性
  7. iOS13新坑(转自Cocoachina)
  8. 11.SSH整合
  9. Djnago模板与标签
  10. web开发: css高级与盒模型