题目:http://codeforces.com/contest/285/problem/E

是2018.7.31的一场考试的题,当时没做出来。

题解:http://www.cnblogs.com/yanshannan/p/9410986.html

因为那个值对于 i 位置来说只和 i 位置放了 i-1 或 i+1 有关,所以状态里记录一下 i 和 i+1 有没有已经放过,再加上 i-1 的对于 i-1 和 i 的状态,就能转移了。

枚举这一位:放 i-1 /放 i+1/先空下。先空下对那个值无影响,所以可以做到;最后相当于指定了 j 个位置放什么值,剩下的位置乘上一个排列即可。

随便往空下的位置放可能导致多一些值,所以最后容斥一下即可。

注意初值赋给那个状态!

那场考试的其余信息就见 Zinn 的博客吧。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const int N=,mod=1e9+;
int n,m,dp[N][N][][],jc[N],jcn[N],ans,f[N];
int pw(int x,int k)
{int ret=;while(k){if(k&1ll)ret=(ll)ret*x%mod;x=(ll)x*x%mod;k>>=1ll;}return ret;}
void init()
{
jc[]=; for(int i=;i<=n;i++) jc[i]=(ll)jc[i-]*i%mod;
jcn[n]=pw(jc[n],mod-);
for(int i=n-;i>=;i--) jcn[i]=(ll)jcn[i+]*(i+)%mod;
}
void upd(int &x){x-=(x>=mod?mod:);}
int C(int n,int m){return (ll)jc[n]*jcn[m]%mod*jcn[n-m]%mod;}
int main()
{
scanf("%d%d",&n,&m);
init();
dp[][][][]=;//so pos1 can't 0!!!!!!
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)//n
for(int k=;k<=;k++)
{
dp[i][j][k][]=dp[i-][j][][k]+dp[i-][j][][k],
upd(dp[i][j][k][]);//rand
if(j)dp[i][j][k][]=dp[i-][j-][][k]+dp[i-][j-][][k],
upd(dp[i][j][k][]),//i+1
dp[i][j][k][]+=dp[i-][j-][][k],
upd(dp[i][j][k][]);//i-1
}
for(int i=m;i<=n;i++)
f[i]=(ll)(dp[n][i][][]+dp[n][i][][])*jc[n-i]%mod;
ans=f[m];
for(int i=m+,fx=-;i<=n;i++,fx=-fx)
ans+=(ll)f[i]*C(i,i-m)%mod*fx,ans+=(fx==?:mod),upd(ans);
printf("%d\n",ans);
return ;
}

CF285 E Positions in Permutations——“恰好->大于”的容斥和允许“随意放”的dp的更多相关文章

  1. 【CF285E】Positions in Permutations(动态规划,容斥)

    [CF285E]Positions in Permutations(动态规划,容斥) 题面 CF 洛谷 题解 首先发现恰好很不好算,所以转成至少,这样子只需要确定完一部分数之后剩下随意补. 然后套一个 ...

  2. codeforces 340E Iahub and Permutations(错排or容斥)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud Iahub and Permutations Iahub is so happy ...

  3. CodeForces - 285E: Positions in Permutations(DP+组合数+容斥)

    Permutation p is an ordered set of integers p1,  p2,  ...,  pn, consisting of n distinct positive in ...

  4. Codeforces 285 E. Positions in Permutations

    \(>Codeforces \space 285 E. Positions in Permutations<\) 题目大意 : 定义一个长度为 \(n\) 的排列中第 \(i\) 个元素是 ...

  5. 【做题】CF285E. Positions in Permutations——dp+容斥

    题意:求所有长度为\(n\)的排列\(p\)中,有多少个满足:对于所有\(i \,(1 \leq i \leq n)\),其中恰好有\(k\)个满足\(|p_i - i| = 1\).答案对\(10^ ...

  6. 【CF715E】Complete the Permutations(容斥,第一类斯特林数)

    [CF715E]Complete the Permutations(容斥,第一类斯特林数) 题面 CF 洛谷 给定两个排列\(p,q\),但是其中有些位置未知,用\(0\)表示. 现在让你补全两个排列 ...

  7. Codeforces 285E - Positions in Permutations(二项式反演+dp)

    Codeforces 题目传送门 & 洛谷题目传送门 upd on 2021.10.20:修了个 typo( 这是一道 *2600 的 D2E,然鹅为啥我没想到呢?wtcl/dk 首先第一步我 ...

  8. CF285E Positions in Permutations(dp+容斥)

    题意,给定n,k,求有多少排列是的 | p[i]-i |=1 的数量为k. Solution 直接dp会有很大的后效性. 所以我们考虑固定k个数字使得它们是合法的,所以我们设dp[i][j][0/1] ...

  9. CF285E Positions in Permutations

    思路 dp+二项式反演的神题 就是dp部分非常麻烦(好吧是我傻了 考虑先钦定m个满足条件的位置,这m个\(x_i\),只能放\(x_i-1\)或\(x_i+1\),然后其他的随便放(得出至少m个的方案 ...

随机推荐

  1. linux下安装rabbitmq的rpm包问题记录

    安装rabbitmq的文章和帖子多如牛毛,不管是官网还是各个博客,这里附个Rabbitmq官网安装Rpm包的链接, http://www.rabbitmq.com/install-rpm.html 不 ...

  2. linux下复制文件夹命令

    在源文件的目录下,对其进行cp操作,到后面的目标路径,对其进行文件夹复制 cp -rf /home/wangshiming/Downloads/* /home/wangshiming/tools

  3. 嵌入式驱动开发之---Linux ALSA音频驱动(一)

    本文的部分内容参考来自DroidPhone的博客(http://blog.csdn.net/droidphone/article/details/6271122),关于ALSA写得很不错的文章,只是少 ...

  4. [Python]xlrd 读取excel 日期类型2种方式

    有个excle表格须要做一些过滤然后写入数据库中,可是日期类型的cell取出来是个数字,于是查询了下解决的办法. 主要的代码结构 data = xlrd.open_workbook(EXCEL_PAT ...

  5. html 锚点定位

    在html中设置锚点定位我知道的有几种方法.在此和大家分享一下: 1.使用id定位: <a href="#1F" name="1F">锚点1< ...

  6. 自定义下拉刷新控件-CBStoreHouseRefreshControl

    本文转载至 http://www.cocoachina.com/ios/20141110/10177.html iOS开发自定义刷新CBStoreHouseRefres 介绍 这是一款在Storeho ...

  7. 函数模板&类模板

    #include <iostream> #if 0//函数模板 template<typename T> T max(T a, T b, T c)//函数模板 { if (a ...

  8. 九度OJ 1154:Jungle Roads(丛林路径) (最小生成树)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:832 解决:555 题目描述: The Head Elder of the tropical island of Lagrishan has ...

  9. Leslie Lamport

    http://lamport.azurewebsites.net/pubs/pubs.html paper

  10. 【题解】P2279消防局的设立

    [题解][P2279 HNOI2003]消防局的设立 又是一道贪心. 随便指定一个点为根,可以知道在覆盖了一个节点的子树的情况下,消防站越高越好.那么我们就贪心吧.\(trick\)是按深度\(pus ...