4321: queue2

Description

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

  这道题还真没想到是DP。
  去年NOIP考前看到此题,当时竟不知DP,只会暴力。至此便叹息痛恨焉。
  昨夜又见,虽欣喜,然不知何为。
  直到我看见:【bzoj4321】queue2
  啊啊啊啊啊!这篇博客已经讲得很详细了。这n个沙茶可以一个一个插入。
  状态表示:f[i][j][0..1]=前i个沙茶有j对是相邻的,其中第i个沙茶和第i-1个沙茶相不相邻
  初始状态:f[1][0][0]=1
  状态转移:
  f[i][j][1]<-f[i-1][j][1] 第i个沙茶插在了第i-1个和第i-2个之间
                    <-f[i-1][j-1][1] 第i个沙茶插在了第i-1个旁边,第i-2个的另一侧
                    <-f[i-1][j-1][0]*2 第i个沙茶插在了第i-1个的左右两侧(第i-1个不与第i-2个相邻)
  f[i][j][0]<-f[i-1][j+1][1]*j 第i个沙茶落了单,干坏事。可以拆散j对,因为不能拆散第i-1个和第i-2个
                    <-f[i-1][j+1][0]*(j+1) 第i个沙茶落了单,干坏事。可以拆散j+1对
                    <-f[i-1][j][1]*(i-j-1) 第i个沙茶落了单,兀自玩去了。(i-1+1)-(j+1),不能拆散j对也不能在第i-1个旁边
                    <-f[i-1][j][0]*(i-j-2) 第i个沙茶落了单,兀自玩去了。(i-1+1)-(j+2),不能拆散j对也不能在第i-1个旁边
  答案输出:ans=f[n][0][0]
  可用滚动数组。时间O(n^2),空间O(n)。
  不过还有递推式:http://oeis.org/A002464 f[n]=(n+1)f[n−1]−(n−2)f[n−2]−(n−5)f[n−3]+(n−3)f[n−4]
  此题转移中分类讨论很有意思,是一道很好的题。注意不要爆int。
 /**************************************************************
Problem: 4321
User: Doggu
Language: C++
Result: Accepted
Time:484 ms
Memory:852 kb
****************************************************************/ #include <cstdio>
long long n, f[][][], cur, MOD=;
inline void add(long long &a,long long b) {if(b>MOD) b%=MOD;a=a+b>MOD?a+b-MOD:a+b;}
int main() {
scanf("%d",&n);
f[cur][][]=;
for( int i = ; i <= n; i++ ) {
cur^=;
for( int j = ; j <= i-; j++ ) {
f[cur][j][]=f[cur^][j][];
if(j) add(f[cur][j][],f[cur^][j-][]);
if(j) add(f[cur][j][],f[cur^][j-][]*);
f[cur][j][]=f[cur^][j+][]*j;
add(f[cur][j][],f[cur^][j+][]*(j+));
add(f[cur][j][],f[cur^][j][]*(i-j-));
add(f[cur][j][],f[cur^][j][]*(i-j-));
}
}
printf("%d\n",f[cur][][]);
return ;
}

DP

 

BZOJ 4321 queue2的更多相关文章

  1. BZOJ 4321: queue2( dp )

    dp(i, j, 1)表示前i个, 有j对是不合法的, i和i-1是在一起的. dp(i, j, 0)表示前i个, 有j对是不合法的, i和i-1不在一起的. 转移我们只需考虑是多了一对不合法的还是少 ...

  2. BZOJ 4321 DP

    思路: 这个DP太神了- 完全没想到 http://blog.csdn.net/geotcbrl/article/details/49663401 //By SiriusRen #include &l ...

  3. dp专练

    dp练习. codevs 1048 石子归并 区间dp #include<cstdio> #include<algorithm> #include<cstring> ...

  4. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  5. 两种dp模型

    两个常见模型 bzoj 4321 题意:编号为1~n的人排成一排,问有多少种排法使得任意相邻两人的编号之差不为1或-1. n<=1000 排列计数问题:考虑把数从小到大插入的过程进行dp. 设 ...

  6. dp培训完结(8.9)

    概率与期望dp 期望: 为什么下面的式子成立? 若x可以取1,2,3,则x+c可以取1+c,2+c,3+c..........x*c可以取1*c,2*c,3*c why? 举个例子(E(x+y)=E( ...

  7. BZOJ 2127: happiness [最小割]

    2127: happiness Time Limit: 51 Sec  Memory Limit: 259 MBSubmit: 1815  Solved: 878[Submit][Status][Di ...

  8. BZOJ 3275: Number

    3275: Number Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 874  Solved: 371[Submit][Status][Discus ...

  9. BZOJ 2879: [Noi2012]美食节

    2879: [Noi2012]美食节 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1834  Solved: 969[Submit][Status] ...

随机推荐

  1. Java non-javadoc

    Java注释 non-javadoc 表示该处没有自己的注释, @see javax.servlet.Servlet#init() 参考see后面的链接 /* * (non-javadoc) * @s ...

  2. 使用spring整合Quartz实现—定时器

    使用spring整合Quartz实现—定时器(Maven项目做演示) 不基于特定的基类的方法 一,开发环境以及依赖的jar包 Spring 4.2.6.RELEASE Maven 3.3.9 Jdk ...

  3. Django_cookie+session

    一.cookie和session介绍 cookie 由服务器产生内容,浏览器收到请求后保存在本地:当浏览器再次访问时,浏览器会自动带上cookie,这样服务器就能通过cookie的内容来判断这个是“谁 ...

  4. 第26次Scrum会议(11/14)【欢迎来怼】

    一.小组信息 队名:欢迎来怼小组成员队长:田继平成员:李圆圆,葛美义,王伟东,姜珊,邵朔,阚博文 小组照片 二.开会信息 时间:2017/11/14 11:35~11:57,总计22min.地点:东北 ...

  5. Linux第一二章笔记

    第一章 Linux内核简介 1. Unix内核的特点 简洁:仅提供系统调用并有一个非常明确的设计目的 抽象:几乎所有东西都被当做文件 可移植性:使用C语言编写,使得其在各种硬件体系架构面前都具备令人惊 ...

  6. 20162328蔡文琛 大二 十二周课上测试 hash

  7. 冲刺One之站立会议1

    接到任务之后的第一天,大家都分头查找了一些相关资料,目的是最终确定用什么语言编写程序.李琦负责对Java实现聊天室进行调研.郭婷和朱慧敏负责对C#进行调研.李敏和刘子晗负责对QT的实现进行调研.并讨论 ...

  8. 安卓端通过http对Mysql进行增删改查

    各类it学习视频,大家都可以看看哦!我自己本人都是通过这些来学习it只知识的! 下面是视频链接转自:http://www.cnblogs.com/yzxk/p/4749440.html Android ...

  9. react+webpack+wepack-dev-server的环境中ant design图标离线的方法

    1.首先说说我老姜对官方提供的demo的理解, 在理解的过程也学到了不少知识. 上图(图0)展示的官网demo的目录结构,node_modules是自己用node下载的, iconfont中是自己的离 ...

  10. 第一次spring冲刺第3、4天

    11月14至15日 因为忙于项目的谈论与探究,以及周末的活动变动,使得博客没有时间提交上去,这里补交. 这两天,主要是应对于市场的探究做谈论,我们主要面对什么类型的客户,以及他们最需要的是什么等话题做 ...