Jzoj5235 好的排列
现在有q个询问,每个询问给定n,k,问有多少排列是好的。答案对10^9+7取模。
显然是计数类dp,我们设f[i][j]表示对于一个1->i的排列,好的位置有j个的情况
考虑转移,显然f[i][j]->f[i+1][k]相当于插入一个i+1
那么我们考虑对j的影响,显然f[i][j]只能转移到f[i+1][j]或者f[i][j],因为这取决于你将i+1放在哪个位置上
如果放在一个不是好位置的两边,那么j就会+1,否则j不变,而且显然,不好的位置一定不连续(显然)
那么转移就十分简单了,参考code
#include<stdio.h>
#include<string.h>
#include<algorithm>
#define M 1000000007
#define L long long
using namespace std;
void ad(int& x,L y){ x=(y+x)%M; }
int f[3010][3010]={0},s[3010][3010]={0},n;
int main(){freopen("permutation.in","r",stdin);freopen("permutation.out","w",stdout);f[1][0]=1; f[2][1]=2; f[3][1]=2; f[3][2]=4;for(int i=3;i<3000;++i){L pi=(i+1)-2,pj=2;for(int j=i-1;pi>=0;--j){ad(f[i+1][j],f[i][j]*pi);ad(f[i+1][j+1],f[i][j]*pj);pi-=2; pj+=2;}}for(int i=1;i<=3000;++i)for(int j=i-1;~j;--j){s[i][j]=s[i][j+1];ad(s[i][j],f[i][j]);}scanf("%d",&n);for(int x,y,i=0;i<n;++i){scanf("%d%d",&x,&y);printf("%d\n",s[x][y]);}
}
转载于:https://www.cnblogs.com/Extended-Ash/p/7846019.html
Jzoj5235 好的排列相关推荐
- leetcode 567. Permutation in String 字符串的排列 滑动窗口法
题目 给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的排列.换句话说,第一个字符串的排列之一是第二个字符串的子串. 示例1:输入: s1 = "ab" s ...
- LeetCode简单题之基于排列构建数组
题目 给你一个 从 0 开始的排列 nums(下标也从 0 开始).请你构建一个 同样长度 的数组 ans ,其中,对于每个 i(0 <= i < nums.length),都满足 ans ...
- LeetCode简单题之重新排列数组
题目 给你一个数组 nums ,数组中有 2n 个元素,按 [x1,x2,-,xn,y1,y2,-,yn] 的格式排列. 请你将数组按 [x1,y1,x2,y2,-,xn,yn] 格式重新排列,返回重 ...
- LeetCode简单题之排列硬币
题目 你总共有 n 枚硬币,并计划将它们按阶梯状排列.对于一个由 k 行组成的阶梯,其第 i 行必须正好有 i 枚硬币.阶梯的最后一行 可能 是不完整的. 给你一个数字 n ,计算并返回可形成 完整阶 ...
- 数据、人工智能和传感器按COVID-19新冠流感排列
数据.人工智能和传感器按COVID-19新冠流感排列 Data, AI and sensors arrayed against COVID-19 各国政府.卫生保健专业人士和工业界争先恐后地应对Cov ...
- 求得到一个字符串@“absdfasdfsdfdsafsd....”所有的排列
//得到一个字符串@"absdfasdfsdfdsafsd...."所有的排列 length!/((相同项)!*(相同项)!)-(int )numberOfstring:(NSSt ...
- 基于css3 transform实现散乱的照片排列
分享一款基于css3 transform实现散乱的照片排列.这是一款简单零散的css3相册排列特效下载.效果图如下: 在线预览 源码下载 实现的代码. html代码: <div class ...
- 多重集合的排列和组合问题
多重集合的排列和组合问题 标签: permutationn2c扩展 2012-04-17 16:18 5671人阅读 评论(0) 收藏 举报 分类: 算法(12) 版权声明:本文为博主原创文章,未 ...
- java 穷举 排列组合,JavaScript递归穷举所有排列组合并找出重复值
null export default { data() { return { resultArr:[] } }, mounted(){ this.sss('aaba','abac'); this.s ...
最新文章
- 第02章 PyTorch基础知识
- [Head First设计模式]身边的设计模式——适配器模式
- sony硬盘摄象机误格式化(fat32)的数据恢复
- leetcode 46 java,leetcode46.java
- CPU单核多核区别【转载】
- Java 数组及多维数组
- moore和mealy_Mealy机和Moore机的比较研究 目录
- 搭建gradle环境
- 瑞友天翼应用虚拟化系统服务器lP,瑞友天翼应用虚拟化系统 V6.0.6发版
- MATLAB——imhist函数
- Shell 脚本常用命令
- android 常用机型尺寸_目前主流的智能手机的屏幕尺寸与分辨率是多少?
- delphi 与 Excel数据交换
- Datawhale-深入浅出pytorch简介安装和基础知识
- 二弟机器人_2017中国机器人技能大赛今天在南京理工大学举行
- 荣耀10的android版本区别,荣耀10和荣耀V10哪个好?荣耀10与V10区别对比 (全文)
- 瑜岿科技综合能源管理系统助力企业节能降耗工作
- 防火墙/UTM/安全网关
- 动态IP分配协议:DHCP
- 全国最好吃的大学食堂来啦!隔壁小孩都馋哭了!