bzoj4321: queue2(DP)
woc万能的OEIS大法!这题居然是有递推式的QAQ
这题的状态想不出来T^T...
f[i][j][0/1]表示前i个编号,有j对相邻的编号位置上相邻,i和i-1是否相邻
先考虑f[i][j][1]怎么转移。
i和i-1相邻,如果i-1和i-2相邻的话,可以选择把i插入这两个中间,这样相邻的对数不会增加,所以可以从f[i-1][j][1]转移。也可以不插入这两个数之间,而是放在i旁边,这样相邻对数会+1,所以可以从f[i-1][j-1][1]转移。如果i-1和i-2不相邻,可以放在i-1的左右两边,f[i][j][1]+=2*f[i-1][j-1][0]转移。
再考虑f[i][j][0]怎么转移。
i不和i-1相邻,可以去插入两个相邻数的中间,这样相邻对数-1,f[i][j][0]+=f[i-1][j+1][1]*j+f[i-1][j+1][0]*(j+1)。也可以不插入两个相邻数的中间,f[i][j][0]+=f[i-1][j][1]*(i-j-1)+f[i-1][j][0]*(i-j-2)。
f[i][j][1]=f[i-1][j][1]+f[i-1][j][1]+f[i-1][j-1][0]*2
f[i][j][0]=f[i-1][j+1][1]*j+f[i-1][j+1][0]*(j+1)+f[i-1][j][1]*(i-j-1)+f[i-1][j][0]*(i-j-2)
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<algorithm>
#define ll long long
using namespace std;
const int maxn=,mod=;
int n,f[][maxn][];
int MOD(int x){return x>=mod?x-mod:x;}
int main()
{
scanf("%d",&n);f[][][]=;
for(int i=;i<=n;i++)
for(int j=;j<i;j++)
{
f[i&][j][]=MOD(f[(i&)^][j][]+(j>?f[(i&)^][j-][]:));
f[i&][j][]=MOD(f[i&][j][]+(j>?MOD(f[(i&)^][j-][]<<):));
f[i&][j][]=MOD(1ll*f[(i&)^][j+][]*j%mod+1ll*f[(i&)^][j+][]*(j+)%mod);
f[i&][j][]=MOD(f[i&][j][]+MOD(1ll*f[(i&)^][j][]*(i-j-)%mod+1ll*f[(i&)^][j][]*(i-j-)%mod));
}
printf("%d\n",f[n&][][]);
return ;
}
公式递推:
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<algorithm>
#define ll long long
using namespace std;
const int maxn=,mod=;
int n,f[maxn];
void read(int &k)
{
int f=;k=;char c=getchar();
while(c<''||c>'')c=='-'&&(f=-),c=getchar();
while(c<=''&&c>='')k=k*+c-'',c=getchar();
k*=f;
}
int MOD(int x){return x>=mod?x-mod:x;}
int main()
{
read(n);
f[]=;f[]=;f[]=;f[]=;
if(n<=)return printf("%d\n",f[n]),;
for(int i=;i<=n;i++)
{
f[i]=MOD(1ll*(i+)*f[i-]%mod-1ll*(i-)*f[i-]%mod+mod);
f[i]=MOD(f[i]-1ll*(i-)*f[i-]%mod+mod);
f[i]=MOD(f[i]+1ll*(i-)*f[i-]%mod);
}
printf("%d\n",f[n]);
return ;
}
bzoj4321: queue2(DP)的更多相关文章
- BZOJ4321 queue2(动态规划)
考虑套路地将1~n依次加入排列.设f[i][j]为已将1~i加入排列,有j对不合法的方案数.加入i+1时可能减少一对不合法的,可能不变,可能增加一对,对于i+1与i的关系再增设0/1/2状态表示i与左 ...
- LightOJ 1033 Generating Palindromes(dp)
LightOJ 1033 Generating Palindromes(dp) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid= ...
- lightOJ 1047 Neighbor House (DP)
lightOJ 1047 Neighbor House (DP) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=87730# ...
- UVA11125 - Arrange Some Marbles(dp)
UVA11125 - Arrange Some Marbles(dp) option=com_onlinejudge&Itemid=8&category=24&page=sho ...
- 【POJ 3071】 Football(DP)
[POJ 3071] Football(DP) Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4350 Accepted ...
- 初探动态规划(DP)
学习qzz的命名,来写一篇关于动态规划(dp)的入门博客. 动态规划应该算是一个入门oier的坑,动态规划的抽象即神奇之处,让很多萌新 萌比. 写这篇博客的目标,就是想要用一些容易理解的方式,讲解入门 ...
- Tour(dp)
Tour(dp) 给定平面上n(n<=1000)个点的坐标(按照x递增的顺序),各点x坐标不同,且均为正整数.请设计一条路线,从最左边的点出发,走到最右边的点后再返回,要求除了最左点和最右点之外 ...
- 2017百度之星资格赛 1003:度度熊与邪恶大魔王(DP)
.navbar-nav > li.active > a { background-image: none; background-color: #058; } .navbar-invers ...
- Leetcode之动态规划(DP)专题-详解983. 最低票价(Minimum Cost For Tickets)
Leetcode之动态规划(DP)专题-983. 最低票价(Minimum Cost For Tickets) 在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行.在接下来的一年里,你要旅行的 ...
随机推荐
- 文件包含漏洞(RFI)
1文件包含漏洞简介 include require include_once require_once RFI综述 RFI是Remote File Inclusion的英文缩写,直译过来就是远 ...
- 【SpringCloud】第三篇: 服务消费者(Feign)
前言: 必需学会SpringBoot基础知识 简介: spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.微代理.事件总线.全局锁.决策竞选. ...
- window上小而美的软件(推荐度按排名)
window上小而美的软件,推荐度按排名 Notepad++ 更好用更强大的笔记本 QTranslate 本地翻译神器 7-zip 解压缩软件 Wox 程序/文件/快捷 神器 1! Everthing ...
- linux学习总结---mysql总结②
函数: 字符串 日期时间 数学 子查询:嵌套查询 1. 做子查询: select sclass from studb where sname='..' 2.select * from studb wh ...
- JVM学习--jvm监控和故障处理工具
java虚拟机性能监控常用命令 Sun JDK监控和故障处理命令有jps.jstat.jinfo.jmap.jhat.jstack . 1.jps jps:JVM Process Status Too ...
- jQuery的图片懒加载
jQuery的图片懒加载 function imgLazyLoad(options) { var settings = { Id: $('img'), threshold: 100, effectsp ...
- 下落的树叶 (The Falling Leaves UVA - 699)
题目描述: 原题:https://vjudge.net/problem/UVA-699 题目思路: 1.依旧二叉树的DFS 2.建树过程中开个数组统计 //紫书源代码WA AC代码: #include ...
- 《Effective C++》读书笔记 条款02 尽量以const,enum,inline替换#define
Effective C++在此条款中总结出两个结论 1.对于单纯常量,最好以const对象或enum替换#define 2.对于形似函数的宏,最好改用inline函数替换#define 接下来我们进行 ...
- jQuery官网plugins栏目下那些不错的插件
前言: 很久以前就关注过jQuery官网plugins栏目下那些全是英文的插件,本人的英文水平很菜,想要全部看懂确实是件不易之事. 好在大部分的案例中都有 view-homepage 或 Try a ...
- 开源自动驾驶仿真平台 AirSim (2) - 编译 AirSim
AirSim 的官方 Github: https://github.com/Microsoft/AirSim 对于 Unreal Engine 来说,AirSim 其实是作为一个插件存在,说白了就是把 ...