DTOJ 4030: 排列计数
【题目描述】
求有多少个1到n的排列满足恰有$k$对在排列中相邻的数满足前小于后,答案对2012取模。
【输入】
一行2个正整数$n,k$。
【输出】
输出一个整数表示答案。
【样例输入】
5 2
【样例输出】
66
【数据范围】
$k<n<=1000$
分析:
计数类问题,应该是个式子或者DP。
考虑$k$和$n$都不大考虑DP。$f[i][j]$表示$n=i$,$k=j$时的答案。
那么考虑怎么转移,考虑将$i$插入长度为$i-1$的排列中,对答案的影响。有$f[i][j]=f[i-1][j]*(j+1)+f[i-1][j-1]*(i-j)$
$f[i-1][j]*(j+1)$表示将$i$插入后满足要求的数对没有变多,因为$i$大于$i-1$排列中的任意一个,所以将$i$插入$j$个以满足的数对中的任意一个都不会使得满足条件的数对变多,又或者直接将$i$放在第一个。
$f[i-1][j-1]*(i-j)$表示将$i$插入后数对变多了,也是因为$i$大于$i-1$排列中的任意一个,所以只要不插入到$j-1$个已经满足的数对中即可,那么就会有$(i-2)-(j-1))$,加上最后一个位置就是$i-j$了。
初值为$f[i][0]=1$,可以用打表和DP式子来判断。
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#define N 1005
#define p 2012
using namespace std;
int n,k,f[N][N];
int main(){
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++) f[i][0]=1;
for(int i=1;i<=n;i++)
for(int j=1;j<i;j++)
f[i][j]=(f[i-1][j]*(j+1)%p+(f[i-1][j-1]*(i-j))%p)%p;
printf("%d\n",f[n][k]);
return 0;
}
总结:
计数类问题,一般都是排列组合和DP。尤其是在数据范围不太大,DP状态可以表示时,要考虑DP。
其实也不能算是DP,更准确的说应该是递推,考虑从$i$到$i+1$的答案变化。
DTOJ 4030: 排列计数的更多相关文章
- BZOJ 4517: [Sdoi2016]排列计数
4517: [Sdoi2016]排列计数 Time Limit: 60 Sec Memory Limit: 128 MBSubmit: 911 Solved: 566[Submit][Status ...
- bzoj-4517 4517: [Sdoi2016]排列计数(组合数学)
题目链接: 4517: [Sdoi2016]排列计数 Time Limit: 60 Sec Memory Limit: 128 MBSubmit: 846 Solved: 530[Submit][ ...
- ACM/ICPC 之 DP-浅谈“排列计数” (POJ1037)
这一题是最近在看Coursera的<算法与设计>的公开课时看到的一道较难的DP例题,之所以写下来,一方面是因为DP的状态我想了很久才想明白,所以借此记录,另一方面是看到这一题有运用到 排列 ...
- 数学(错排):BZOJ 4517: [Sdoi2016]排列计数
4517: [Sdoi2016]排列计数 Time Limit: 60 Sec Memory Limit: 128 MBSubmit: 693 Solved: 434[Submit][Status ...
- 【数论·错位排列】bzoj4517 排列计数
4517: [Sdoi2016]排列计数 Time Limit: 60 Sec Memory Limit: 128 MBSubmit: 1428 Solved: 872[Submit][Statu ...
- BZOJ 4517: [Sdoi2016]排列计数 [容斥原理]
4517: [Sdoi2016]排列计数 题意:多组询问,n的全排列中恰好m个不是错排的有多少个 容斥原理强行推♂倒她 $恰好m个不是错排 $ \[ =\ \ge m个不是错排 - \ge m+1个不 ...
- BZOJ 2111: [ZJOI2010]Perm 排列计数 [Lucas定理]
2111: [ZJOI2010]Perm 排列计数 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 1936 Solved: 477[Submit][ ...
- bzoj4517排列计数 错排+组合
4517: [Sdoi2016]排列计数 Time Limit: 60 Sec Memory Limit: 128 MBSubmit: 1491 Solved: 903[Submit][Statu ...
- BZOJ_4517_[Sdoi2016]排列计数_组合数学
BZOJ_4517_[Sdoi2016]排列计数_组合数学 Description 求有多少种长度为 n 的序列 A,满足以下条件: 1 ~ n 这 n 个数在序列中各出现了一次 若第 i 个数 A[ ...
随机推荐
- AtCoder Beginner Contest 224
AtCoder Beginner Contest 224 A - Tires 思路分析: 判断最后一个字符即可. 代码如下: #include <bits/stdc++.h> using ...
- 2021.8.18 NKOJ周赛总结
两个字总结:安详 T1: NKOJ-6179 NP问题 问题描述: p6pou在平面上画了n个点,并提出了一个问题,称为N-Points问题,简称NP问题. p6pou首先在建立的平面直角坐标系,并标 ...
- 21.10.18 test
可可大神出题,四款有趣的游戏推荐,第四个好玩/se T1 loopers \(\color{green}{100}\) 考虑钦定 \(a_1,a_i\) 的位置,固定左边一坨,那么剩下的一坨的 \(\ ...
- simulate_click
#!/bin/bashlet actual_x=104+144*$[$2-1]let actual_y=945+144*$[$1-1]adb shell input tap ${actual_x} $ ...
- 『学了就忘』Linux基础命令 — 19、目录操作的相关命令
目录 1.ls命令 2.cd命令 (1)绝对路径和相对路径 (2)cd命令的简化用法 3.pwd命令 4.mkdir命令 5.rmdir命令 常用目录操作的相关命令: ls命令 cd命令 pwd命令 ...
- MySql表、约束、视图
MySql表.约束.视图 索引组织表 在InnoDB存储引擎中,表都是根据主键顺序组织存放的,这种存储方式的表成为索引组织表(index organized table). 每张表都有主键,如果创建表 ...
- 剖析虚幻渲染体系(12)- 移动端专题Part 1(UE移动端渲染分析)
目录 12.1 本篇概述 12.1.1 移动设备的特点 12.2 UE移动端渲染特性 12.2.1 Feature Level 12.2.2 Deferred Shading 12.2.3 Groun ...
- win10 python3.8 wxpython.whl 安装步骤
wxpython是python开发常用图形用户界面(GUI)工具之一,GUI因其直观便捷,对我们提高开发效率一定帮助.这里介绍一下新版本wxPython 4.0.1的安装过程及注意事项. 第1步:下 ...
- PTA 7-2 哈夫曼编码 (30分)
PTA 7-2 哈夫曼编码 (30分) 给定一段文字,如果我们统计出字母出现的频率,是可以根据哈夫曼算法给出一套编码,使得用此编码压缩原文可以得到最短的编码总长.然而哈夫曼编码并不是唯一的.例如对字符 ...
- CODING添加ssh提示格式错误的问题
不能去.shh文件夹打开id_rsa.pub文件查看 解决方法: 进入.ssh文件夹,然后右键git bash here 输入代码 cat id_rsa.pub 回车即可