queue2

HYSBZ - 4321

n 个沙茶,被编号 1~n。排完队之后,每个沙茶希望,自己的相邻的两
人只要无一个人的编号和自己的编号相差为 1(+1 或-1)就行; 
现在想知道,存在多少方案满足沙茶们如此不苛刻的条件。
Input

只有一行且为用空格隔开的一个正整数 N,其中 100%的数据满足 1≤N ≤ 1000; 

Output

一个非负整数,表示方案数对 7777777 取模。   
 

Sample Input

4

Sample Output

2
样例解释:有两种方案 2 4 1 3 和 3 1 4 2
 
sol:超有趣的dp,但自己就是想不出来,然后翻了题解
考虑把n个数字按1~n一个个填过去,而不是按照位置1~n一个个填数字

把数字按照1~n排序,
dp[i][j][0]表示用到i,有j对数相差为1,i与i-1不相邻
dp[i][j][1]表示用到i,有j对数相差为1,i与i-1相邻
题解 https://blog.csdn.net/yjschaf/article/details/72453712

/*
把数字按照1~n排序,
dp[i][j][0]表示用到i,有j对数相差为1,i与i-1不相邻
dp[i][j][1]表示用到i,有j对数相差为1,i与i-1相邻
题解 https://blog.csdn.net/yjschaf/article/details/72453712
*/
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
inline ll read()
{
ll s=;
bool f=;
char ch=' ';
while(!isdigit(ch))
{
f|=(ch=='-'); ch=getchar();
}
while(isdigit(ch))
{
s=(s<<)+(s<<)+(ch^); ch=getchar();
}
return (f)?(-s):(s);
}
#define R(x) x=read()
inline void write(ll x)
{
if(x<)
{
putchar('-'); x=-x;
}
if(x<)
{
putchar(x+''); return;
}
write(x/);
putchar((x%)+'');
return;
}
#define W(x) write(x),putchar(' ')
#define Wl(x) write(x),putchar('\n')
const ll N=,Mod=;
ll n,dp[N][N][];
inline void Ad(ll &x,ll y)
{
x+=y; x-=(x>=Mod)?Mod:;
}
int main()
{
int i,j,k;
R(n);
dp[][][]=;
for(i=;i<=n;i++)
{
for(j=;j<=i-;j++)
{
Ad(dp[i][j][],dp[i-][j+][]*(j+)%Mod);
Ad(dp[i][j][],dp[i-][j+][]*j%Mod);
Ad(dp[i][j][],dp[i-][j][]*(i-j-)%Mod);
Ad(dp[i][j][],dp[i-][j][]*(i-j-)%Mod); Ad(dp[i][j][],dp[i-][j-][]*%Mod);
Ad(dp[i][j][],dp[i-][j-][]);
Ad(dp[i][j][],dp[i-][j][]);
}
}
Wl(dp[n][][]);
return ;
}
/*
input
4
output
2
*/
 

最新文章

  1. Java 配置maven及阿里云镜像
  2. svn 权限配置
  3. LeetCode5:Longest Palindromic Substring
  4. DSP using MATLAB示例Example3.16
  5. React开发项目例子
  6. WordPress Import 上传的文件尺寸超过php.ini中定义的upload_max_filesize值--&amp;gt;解决方法。
  7. Linux内核数据包的发送传输
  8. 《Python爬虫学习系列教程》学习笔记
  9. java web面试题
  10. 9.2、Libgdx的输入处理之鼠标、触摸和键盘
  11. 网址导航19A
  12. sfc /scannow命令如何能用虚拟光驱完成修复?(xp下的办法)
  13. Linux 小知识翻译 - 「Linux」和病毒
  14. 【float】与【position】汇总
  15. C#图像处理:截图程序(包含鼠标)
  16. &lt;Android 基础(三十五)&gt; RecyclerView多类型Item的正确实现姿势
  17. vCenter Server Virtual Appliance features and benefits
  18. Assignment (HDU 2853 最大权匹配KM)
  19. 转:sock_ev——linux平台socket事件框架(uri地址的解析) .
  20. 03JavaScript 输出

热门文章

  1. HashSet——add remove contains方法底层代码分析(hashCode equals 方法的重写)
  2. java9 新特征
  3. 数据集:Introduction to Econometrics by Stock&amp;Watson
  4. 配置Notepad++万能调试
  5. JavaWeb【五、内置对象】
  6. JavaJDBC【三、增删改查】
  7. thinkphp5.0 column多字段问题
  8. NORDIC GATT事件
  9. Linux工具之ss
  10. Java语言基础(7)