Permutation Counting
\(n\) 的范围很小,考虑动态规划。
\(f_{i,j}\) 在前 \(i\) 个数有 \(j\) 个 \(<\) 的个数。
若 \(\texttt {a<b<c<d}\),且有序列 \(a<c>b\)。
若在 \(a\) 之前插入 \(d\),则变为 \(d>a<c>b\),\(<\) 个数不变。
若在 \(a<c\) 之间插入 \(d\),则变为 \(a<d>c>b\),\(<\) 个数不变。
若在 \(c>b\) 之间插入 \(d\),则变为 \(a<c<d>b\),\(<\) 个数加一。
若在 \(b\) 之后插入 \(d\),则变为 \(a<c>b<d\),\(<\) 个数加一。
所以在序列头部,\(<\) 号处加入,\(<\) 总个数不变。在序列尾部,\(>\) 号处加入,\(<\) 总个数加一。
可得转移方程:f[i][j]=(f[i-1][j]*(j+1)+f[i-1][j-1]*(i-j))。
即若 \(<\) 不增加 \(f_{i,j}=f_{i-1,j}\times ( \text{原} < \text{的个数} + \text{开头的位置})\)。
若增加 f[i][j]=f[i-1][j-1]*((i-1)-(j-1)-1+1); \(i-1\) 为数字个数,\(j-1\) 为 \(<\) 号个数,数字个数减一就是符号的个数,减去 \(<\) 号个数即为 \(>\) 号个数,最后还要在加上序列末尾的 \(1\)。所以最后变为 f[i-1][j-1]*(i-j)。
代码:
#include <bits/stdc++.h>
using namespace std;
const int N=1007;
const int mod=1e9+7;
long long f[N][N];
int main(){
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
for(int i=1;i<N;i++){
f[i][0]=1;
for(int j=1;j<N;j++){
f[i][j]=(f[i-1][j]*(j+1)+f[i-1][j-1]*(i-j))%mod;
}
}
int a,b;
while(cin>>a>>b) cout<<f[a][b]<<'\n';
return 0;
}
Permutation Counting的更多相关文章
- hdu 3664 Permutation Counting(水DP)
Permutation Counting Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- HDU3664 Permutation Counting
Permutation Counting Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- HDU - 3664 Permutation Counting 排列规律dp
Permutation Counting Given a permutation a1, a2, … aN of {1, 2, …, N}, we define its E-value as the ...
- hdu3664 Permutation Counting(dp)
hdu3664 Permutation Counting 题目传送门 题意: 在一个序列中,如果有k个数满足a[i]>i:那么这个序列的E值为k,问你 在n的全排列中,有多少个排列是恰好是E值为 ...
- H. Permutation Counting 判环,计数,拓扑
H. Permutation Counting 2022/7/28 传送门:https://codeforces.com/group/5zHJ4CTyoU/contest/392060/problem ...
- HDU - 3664 Permutation Counting
Discription Given a permutation a1, a2, … aN of {1, 2, …, N}, we define its E-value as the amount of ...
- HDU 3664 Permutation Counting (DP)
题意:给一个 n,求在 n 的所有排列中,恰好有 k 个数a[i] > i 的个数. 析:很明显是DP,搞了好久才搞出来,觉得自己DP,实在是太low了,思路是这样的. dp[i][j]表示 i ...
- HDU 6880 Permutation Counting dp
题意: 给你一个n和一个长度为n-1的由0/1构成的b序列 你需要从[1,n]中构造出来一个满足b序列的序列 我们设使用[1,n]构成的序列为a,那么如果ai>ai+1,那么bi=1,否则bi= ...
- UVALive 5971
Problem J Permutation Counting Dexter considers a permutation of first N natural numbers good if it ...
- LeetCode_Next Permutation
Implement next permutation, which rearranges numbers into the lexicographically next greater permuta ...
随机推荐
- js回忆录(4) -- 对象,构造函数
1.对象 && 构造函数 js是一门基于对象的语言,里边所有的数据类型都可以当对象使唤(当然null和undefined除外),当我们在v8引擎里声明一个对象时会发现每个对象属性里边都 ...
- 查看Unity3D中默认的变量名与按键的映射
博客地址:https://www.cnblogs.com/zylyehuo/ 选择 Edit/Project Settings/Input Manager 点击 Axes 即可查看对应变量名与按键的映 ...
- SpringBoot集成亚马逊的S3对象存储
依赖导入:aws-java-sdk-s3 <dependencyManagement> <dependencies> <dependency> <groupI ...
- oracle中查看锁表,ORACLE中查看当前系统中锁表情况
1.ORACLE中查看当前系统中锁表情况 select * from v$locked_object 2.可以通过查询v$locked_object拿到sid和objectid,然后用sid和v$se ...
- 前端打包发布以及小程序发布(IIS下部署前端站点)
作为后端程序员 一直没有摸索过前端项目的打包发布,因为项目需要 这次经历一个 前端项目以及小程序的打包发布,记录一下. 一.前端部署 部署过程种一直出现node-sass 问题 https:/ ...
- 用正则表达式做爬取--java进阶day06
1.String类中与正则有关的方法 replaceAll方法中要填入两个正则表达式,第一个是我们要修改的字符串,第二个则是我们要改成以后的字符串 如下图,出师表中存在很多数字,我们要删去这些数字,就 ...
- 基于Vosk与Transformers的会议摘要生成系统实战教程
一.项目背景与价值 在现代办公场景中,会议记录与摘要生成是提升工作效率的重要环节.传统人工记录方式存在效率低.易遗漏等问题,而基于AI的解决方案可以实时转录会议内容并生成结构化摘要.本教程将指导开发者 ...
- c#实现 正弦sin、反正弦arcsin,正切tan、反正切arctan:求角度值
1 #region 三角函数和反三角函数 2 3 using System; 4 using System.Collections.Generic; 5 using System.IO; 6 usin ...
- 29.1K star!免费接入GPT-4/DeepSeek等顶级大模型,这个开源API神器绝了!
嗨,大家好,我是小华同学,关注我们获得"最新.最全.最优质"开源项目和高效工作学习方法 还在为天价API费用发愁?这个开源项目让你免费畅用GPT-4.DeepSeek.Claude ...
- 45分钟从零搭建私有MaaS平台和生产级的Qwen3模型服务
今天凌晨,阿里通义团队正式发布了 Qwen3,涵盖六款 Dense 模型(0.6B.1.7B.4B.8B.14B.32B)和两款 MoE 模型(30B-A3B 和 235B-A22B).其中的旗舰模型 ...