Permutation

Codeforces 1909I - Short Permutation Problem

介绍一下 k 老师教我的容斥做法。 考虑固定 \(m\) 对所有 \(k\) 求答案。先考虑 \(k=n-1\) 怎么做。我们将所有元素按照 \(\min(i,m-i)\) 为第一关键字,\(-i\) 为第二关键字从小到大插入,即按照 \(n,n-1,n-2,\cdots,m+1,m,1,m-1,2 ......
Permutation Codeforces Problem 1909I Short

P10033 「Cfz Round 3」Sum of Permutation

原题链接 基础赛唯一写了的题,因为我喜欢构造! 事实上的确有点麻烦了,应该会有更好的做法。但是自我感觉这个思维很连贯,因为这就是我做题时思路的写照。 记 \(p_{pos1}=1,p_{posn}=n\)。 首先可以构造 \(a_i\gets p_i+1\) 这样一定满足第二个限制,但是当 \(p_ ......
Permutation P10033 10033 Round Cfz

ARC167D Good Permutation 题解

ARC167D 看到排列并且有 \(i\gets a_i\),就可以直接建出图来,显然是若干个不相干的环。 如果不求字典序最小,就可以直接不在同一个环中的 \(i,j\) 直接交换就可以了,因为它要求了最小化操作数。如果求字典序最小,直接从前往后扫一遍,可以用 set 维护不在这个环中且 \(j>i ......
题解 Permutation 167D Good ARC

CF1909F1 Small Permutation Problem (Easy Version)

给定一个长度为 \(n\) 的数组 \(a\),其中 \(a_i \in [1, n]\),试计算满足以下条件的 \([1, n]\) 的排列 \(p\) 的个数: \(\forall i \in [1, n], \sum_{1 \le j \le i} [p_j \le i] = a_i\) \( ......
Permutation Problem Version 1909F Small

CF1909F2 Small Permutation Problem (Hard Version)

给定一个长度为 \(n\) 的数组 \(a\),其中 \(a_i \in [-1, n]\),试计算满足以下条件的 \([1, n]\) 的排列 \(p\) 的个数: \(\forall i \in [1, n], \text{有 }\sum_{1 \le j \le i} [p_j \le i] ......
Permutation Problem Version 1909F Small

CodeForces 1909F2 Small Permutation Problem (Hard Version)

洛谷传送门 CF 传送门 感觉这个题还是挺不错的。 考虑 F1。考察 \(a_i\) 差分后的意义,发现 \(a_i - a_{i - 1}\) 就是 \((\sum\limits_{j = 1}^{i - 1} [p_j = i]) + p_i \le i\)。 考虑将其转化为棋盘问题。在 \(( ......

CF213E Two Permutation 题解

CF213E Two Permutations 题解 题意: 给出两个排列$a,b $,长度分别为 \(n,m\),你需要计算有多少个 $ x $,使得 \(a_1 + x,a_2 + x,...a_n + x\) 是 \(b\) 的子序列。 \(n \leq m \leq 2 \times 10^ ......
题解 Permutation 213E 213 Two

[ARC141C] Bracket and Permutation

考虑假设已知括号序列 \(s\),如何求出 \(p,q\)。 对于求 \(p\),考虑从 \(s_1\) 到 \(s_n\) 逐个往里放,如果能放就直接放,肯定不劣,否则就从后面抽最近的左括号放过来,然后继续放。不难证明不存在更优方案,对于 \(q\) 同理。 接下来我们发现,如果 \(p\) 中存 ......
Permutation Bracket 141C ARC 141

E. Permutation Sorting

E. Permutation Sorting You are given a permutation$^\dagger$ $a$ of size $n$. We call an index $i$ good if $a_i=i$ is satisfied. After each second, we ......
Permutation Sorting

E. Permutation Sorting 树状数组实现离线区间数点

题目链接🔗 题意解读:给定一串数组a,每次操作将所有的 a[i] != i 的数循环右移一位,直到所有的数都在自己的位置上。求对于1到n之间的每个i,需要移动多少次。 首先,先考虑移动次数的问题: 为了简化循环问题,考虑将数组长度手动扩充至 2 * n,对于所有的位置 i 上的一个 a[i] ,分 ......
数组 区间 Permutation Sorting

[Codeforces] CF1858C Yet Another Permutation Problem

Yet Another Permutation Problem - 洛谷 这题本来很简单,思路我也想到了,但是代码一直没写对,思路也一直换来换去(悲 然而发现最开始的思路是对的 题意 Alex 收到了一个名为 "GCD 排列" 的游戏作为生日礼物。这个游戏的每一轮进行如下操作: 首先,Alex 选择 ......
Permutation Codeforces Another Problem 1858C

DPT Permutation

题意 给定 \(S \in ['>', '<']\)。表示排列 \(P\) 两点之间的大小关系。 求排列 \(P\) 的方案数。 Sol 排列方案,考虑 \(f_{i, j}\) 表示第 \(i\) 位的数在排列中排名为 \(j\) 的方案数。 当 \(S_i = '>'\),\(f_{i, j} ......
Permutation DPT

CF1858C Yet Another Permutation Problem

CF1858C Yet Another Permutation Problem Yet Another Permutation Problem - 洛谷 这题本来很简单,思路我也想到了,但是代码一直没写对,思路也一直换来换去(悲 然而发现最开始的思路是对的 题意 Alex 收到了一个名为 "GCD ......
Permutation Another Problem 1858C 1858

题解 P7972【[KSN2021] Self Permutation】

怎么其他两篇题解都是 \(O(n\log n)\) 的,来发一个 \(O(n)\) 做法,当考前复习了。 对原序列建出小根笛卡尔树,节点编号与原序列中的下标相同。记 \(T_u\) 表示以 \(u\) 为根的子树,\(lc(u),rc(u)\) 分别表示 \(u\) 的左儿子和右儿子。 设 \(f_ ......
题解 Permutation P7972 7972 2021

CF1542E2 Abnormal Permutation Pairs (hard version) 题解

怎么会有这么离谱的题目啊。 【模板】前缀和优化 dp。 思路 考虑一个基本的东西。 由于要求字典序的限制。 我们可以枚举最长公共前缀计算。 考虑如何求长度为 \(i\) 的排列有 \(j\) 个逆序对的数量。 设 \(dp_{i,j}\)。 \[dp_{i,j}=\sum_{k=0}^{i-1}dp ......
题解 Permutation Abnormal version 1542E

[题解] CF1156E Special Segments of Permutation

Special Segments of Permutation 给你一个排列 \(p\),求有多少个区间 \([l, r]\) 满足 \(p_l + p_r = \max_{i \in [l, r]} p_i\)。 \(n \le 2 \times 10^5\)。 按最大值分治,记当前的分治中心为 ......
题解 Permutation Segments Special 1156E

UVA1485 Permutation Counting

传送门 description 一个长度为 \(n\) 的排列 \(a\),其权值为满足 \(a_i>i\) 的位置的数量。 求权值恰为 \(k\) 的长度为 \(n\) 的排列的方案数。 \(n,k\leq 1000\) solution 设 \(f_{i,j}\) 表示考虑前 \(i\) 个数, ......
Permutation Counting 1485 UVA

[ABC299G] Minimum Permutation

ABC229G洛谷链接 atcoder链接 容易发现如果最终答案有两个相邻的数 \(b_i,b_{i+1}\) 满足 \(b_i>b_{i+1}\) 且 \(b_i\) 之后出现过,则显然可以找到另一个不劣的答案不满足这个性质 先说一个错误的结论:从前往后考虑,用链表维护答案,对于加入的一个数 \( ......
Permutation Minimum 299G ABC 299

CF612E Square Root of Permutation

挺有意思的一个构造题,不过这种排列置换相关的套路感觉都太明显了 首先考虑把原图的每个置换环求出来,稍作观察会发现所有长度为奇数的置换环都可以很容易地构造出对应的\(q\)数组 但长度为偶数的置换环就不能单独构造了,但我们发现可以把两个长度相同且为偶数的置换环交错着合并来得到一个合法的\(q\)数组 ......
Permutation Square 612E Root 612

CF1542E2 Abnormal Permutation Pairs (hard version) 题解

Abnormal Permutation Pairs (hard version) 两个限制:字典序小、逆序对大,一个显然的想法就是确保一对关系,统计另一对关系。 确保哪一对呢?我们想了想,决定确保字典序小,因为字典序是可以贪心的。 具体而言,我们考虑两个排列自第 \(i\) 位开始出现了不同。这样 ......
题解 Permutation Abnormal version 1542E

【前缀和优化 dp】CF1542E1 Abnormal Permutation Pairs (easy version) 题解

CF1542E1 首先时间复杂度肯定是 \(\mathcal{O}(n^3)\) 的。 容易想到先枚举最长公共前缀,然后枚举 \(p_{len+1}\) 和 \(q_{len+1}\),再枚举逆序对数进行统计。 令 \(f_{i,j}\) 表示有 \(j\) 个逆序对的 \(i\) 阶排列的个数。 ......
题解 前缀 Permutation Abnormal version

【前缀和优化 dp】CF1542E2 Abnormal Permutation Pairs (hard version) 题解

CF1542E2 首先时间复杂度肯定是 \(\mathcal{O}(n^3)\) 的。 容易想到先枚举最长公共前缀,然后枚举 \(p_{len+1}\) 和 \(q_{len+1}\),再枚举逆序对数进行统计。 令 \(f_{i,j}\) 表示有 \(j\) 个逆序对的 \(i\) 阶排列的个数。 ......
题解 前缀 Permutation Abnormal version

Codeforces Round 893 (Div. 2) C. Yet Another Permutation Problem

有一个 \(gcd\) 游戏,按以下步骤进行: 选择一个 \(n\) 的排列 \(p_1, p_2, \cdots, p_n\) 。 对于每个 \(i\) ,\(d_i = gcd(p_i, p_{i \% n + 1})\) 排列 \(p\) 的 \(score\) 为数组 \([d_1, d_2 ......
Permutation Codeforces Another Problem Round

[ARC167D] Good Permutation 题解

题意 对于一个长度为 \(N\) 的排列 \(Q\),定义其为好的,当且仅当 对于任意整数 \(i \in \left[1, N\right]\),在进行若干次操作 \(i \leftarrow Q_i\) 后可以得到 \(i = 1\)。 给定一个排列 \(P\),定义一次操作为交换两个数。定义 ......
题解 Permutation 167D Good ARC

ARC167D Good Permutation 题解

题意 给定一个长度为 \(N\) 的排列 \((P_1,P_2,\cdots,P_N)\)。称一个排列 \(P\) 为“好排列”当且仅当对于所有 \(1\leq x\leq N\),都能通过不停地使 \(x\leftarrow P_x\) 将 \(x\) 变成 \(1\)。 通过最小次数操作将 \( ......
题解 Permutation 167D Good ARC

[AGC030F] Permutation and Minimum 题解

Permutation and Minimum 看到 300 的数据范围,再加上计数题,很容易就往计数 DP 方向去想。 为方便,我们将 \(n\) 乘二。 因为是两个位置取 \(\min\),于是我们便想到从小往大把每个数填入序列。于是DP数组第一维的意义便出来了:当前已经填入了前 \(i\) 小 ......
题解 Permutation Minimum 030F AGC

Educational Codeforces Round 109 (Rated for Div. 2) B. Permutation Sort

给一个长为 \(n\) 的排列 \(a\),你可以执行以下操作:选择一个子数组并且按任意顺序重排,但这个子数组不能是数组本身。 询问最少经过多少次操作可以使得排列 \(a\) 变为升序。 定义操作次数为 \(ans\) 。 若数组已经有序,\(ans = 0\) 。 若 \(a_1 = 1\) 或者 ......

D. Prefix Permutation Sums

D. Prefix Permutation Sums 吐槽:读题不仔细,还以为原数组的取值是任意的,最后看题解的时候才发现取值在[1,n],当时因为看不懂直接跳过了 题意:给你一个缺了一个的前缀和数组,让你判断是否存在原数组,取值[1,n],每个数只存在一次 可以分类讨论 1 缺少最后一个前缀和 2 ......
Permutation Prefix Sums

P3477 [POI2008] PER-Permutation 解题报告

我咕咕咕了这道题半年之久? 好像洛谷好多题解都被 hack 了啊。 (本题解现有 hack 均通过) 题目链接 折叠题干 [POI2008] PER-Permutation 题目描述 Multiset is a mathematical object similar to a set, but ea ......

AtCoder Grand Contest 046 E Permutation Cover

洛谷传送门 AtCoder 传送门 若 \(2\min\limits_{i = 1}^m a_i < \max\limits_{i = 1}^n a_i\) 就无解,因为根据排列的性质必然存在 \(yxxxy\) 或两端 \(xxyy\) 的情况,并且若这个条件不满足,就可以构造一组解。 考虑最小化 ......
Permutation AtCoder Contest Grand Cover