草庐IT

AtCoder Beginner Contest 282 G - Similar Permutation

套路题题意求有多少个\(1\)到\(n\)的排列满足恰有\(k\)对在排列中相邻的数满足前小于后\(2\leqn\leq500,0\leqk\leq(n-1)\)思路f[i][j][k]表示已经放置了前i个数,放置的第i个数是前i个数中第j大的($1\leq\(`j`\)\leq$i),已放置的前i个数形成的所有排列满足恰有k对在排列中相邻的数满足前小于后的排列数量。放置第i+1个数时,第i+1个数是前i+1个数中第j大的,第i个数是严格小于前i个数中第j大的,会为排列增加一对相邻的数满足前小于后,第i个数是大于等于前i个数中第j大的,不会为排列增加一对相邻的数满足前小于后,转移方程为:\[f

CF888D Almost Identity Permutations 题解

CF链接:AlmostIdentityPermutationsLuogu链接:AlmostIdentityPermutations${\scr\color{Cyan}{\text{Solution}}}$前言这好像是一道能用数学秒掉的题目但由于我喜欢DP过菜,我们用DP来解决这个问题分析$dp[i][j]$表示在$i$个数里有$j$个数位置满足$a[i]==i$答案很简单,就是$\sum_{i=n-k}^{n}dp[n][i]$接下来考虑状态如何转移$dp[i][j]$可以由$dp[i-1][j],dp[i-1][j-1],dp[i-1][j+1]$转移而来从$dp[i−1][j−1]$转移,

CF888D Almost Identity Permutations 题解

CF链接:AlmostIdentityPermutationsLuogu链接:AlmostIdentityPermutations${\scr\color{Cyan}{\text{Solution}}}$前言这好像是一道能用数学秒掉的题目但由于我喜欢DP过菜,我们用DP来解决这个问题分析$dp[i][j]$表示在$i$个数里有$j$个数位置满足$a[i]==i$答案很简单,就是$\sum_{i=n-k}^{n}dp[n][i]$接下来考虑状态如何转移$dp[i][j]$可以由$dp[i-1][j],dp[i-1][j-1],dp[i-1][j+1]$转移而来从$dp[i−1][j−1]$转移,