• 2024-11-10CF2030D QED's Favorite Permutation 题解
    题目传送门前置知识差分解法对于移动,我们可以无脑进行交换来保证移动,然后将中途交换的位置再交换回去。通过手摸不难发现,\(p_{i}\)能移动到\(i\)当且仅当\(s_{\min(i,p_{i})\sim\max(i,p_{i})}\)中不含有LR子串。反向考虑,即LR子串不被上述区间包含,差分判断即可。
  • 2024-10-18【题解】[Codechef] Beautiful Permutation
    传送门以此纪念我场切的dp。这种计数的类型一看就很dp的样子。考场上一开始设的dp状态是\(dp_{i,j,k_1,k_2,0/1}\)表示将前\(i\)个数分为\(j\)段,放了\(k_1\)个偶数,\(k_2\)个奇数,当前段为偶数段或奇数段的方案数。考虑如何转移,记\(cnt_0\)表示序列中可填入的偶数
  • 2024-10-11Small Permutation Problem (Easy Version)
    算法考虑转化每个点\(p_i\)在一个平面直角坐标系中表示为点\((i,p_i)\)于是转化为一个棋盘问题,即每一个点不能在同一行/同一列\(a\)数组的限制相当于在左下角为\((0,0)\),右上角为\((i,i)\)中的正方形中,有\(a_i\)个棋子于是在每一次加入的时候,都只能在
  • 2024-09-10【五一省选集训day4】Permutation
    【五一省选集训day4】Permutation每次操作把数分成两组,每组内的顺序不变,把第\(0\)组放到第\(1\)组前面。发现这很像基于二进制的基数排序。假设我们进行\(k\)次这样的操作,就相当于给每个数赋一个值\((x,y)\),其中\(0\lex\le2^k-1,y=\texttt{数的下标}\)。然后对第一维
  • 2024-08-24G - Ban Permutation
    G-BanPermutation求长为\(N(N\leq100)\)且满足以下条件的排列\(P=(P_1,P_2,...,P_N)\)的个数:\(\forall1\leqi\leqN\),\(|P_i-i|\geqX(X\leq5)\)。考虑使用容斥\(f[i][j][s]\)表示填到第i个数,确定了j个不合法的位置(只填不合法的),并且\([i-(x-1),i+(x-1)]\)的状态为
  • 2024-08-22[题解] permutation
    [题解]Permutation解析一眼DP或者组合。70pts场上推的DP对于\((4,2,2)\),先把所有序列枚举出来:\[\begin{split}1\\\2\\1\\\3\\1\\\4\\--\\2\\\3\\2\\\4\\3\\\4\end{split}\]可以发现,对于分割线上的部分,可以看作\((3,1,1)\)的所有序列
  • 2024-08-18LeetCode 556. 下一个更大元素 III(next_permutation())
    题目:556.下一个更大元素III思路:用到next_permutation(),细节看注释。next_permutation、prev_permutationclassSolution{public:intnextGreaterElement(intn){ //转变为string类型,便于调用next_permutation()strings=to_string(n);
  • 2024-08-18CF1946E Girl Permutation
    中文题面:https://www.luogu.com.cn/problem/CF1946E先考虑只要求前缀最大值怎么做。从前往后很容易想到\(O(n^3)\)的dp,用前缀和优化可以到\(O(n^2)\).注意相对顺序,\([p_i,p_{i+1}-1]\)选择的数,必须让最大的放在最前面才合法。比如选1,3,9,在[5,8]这个区间,只有9,1,3和9,3,1是合法
  • 2024-08-16next_permutation
    使用next_permutation函数非常简单,以下是具体的步骤和注意事项:步骤:包含头文件:确保包含<algorithm>头文件,因为next_permutation函数位于这个头文件中。#include<algorithm>准备容器:next_permutation可以用于处理任何支持随机访问迭代器的容器,比如vector或strin
  • 2024-08-08permutation 不仅仅排列,组合也可以
    排序:1——n所有不重复的排列include<bits/stdc++.h>usingnamespacestd;inta[10];intmain(){intn,i,j=1,k;cin>>n;for(i=1;i<=n;i++){a[i]=i;//a[1~n]=1——n}do{for(k=1;k<=n;k++)printf("%5d",a[k]);printf("\n");}whi
  • 2024-07-28Solution - Atcoder ARC114F Permutation Division
    令\(a\)为题目中的\(P\)。首先考虑后手的重排策略是什么。因为\(a\)是个排列,元素互不相同,那么肯定就是按照每一段的第一个数的大小,越大的放在越前面。那么当\(a_1\lek\)的时候,显然先手会把以\(1\simk\)开头来划分段。因为否则存在一个开头\(>k\)的段,后手把其放
  • 2024-07-28反转函数以获得给定排列的字典索引
    我正在处理一个Python3代码挑战,其中消息根据52张标准扑克牌的洗牌顺序进行编码或解码。我已经找到了如何对消息进行编码,但我很难反转该函数以从给定的洗牌顺序中获取消息。我有一个函数可以根据索引查找卡片列表的字典排列。我现在需要一个从卡片列表中进行排列并输出其索引
  • 2024-07-28如何生成带有约束的排列
    我想生成按升序排列的所有可能的["x","y","z",1,2,3]列表。“x”、“y”和“z”可以是任何实数,因此它们的顺序可以是任意的。然而,由于1<2<3,1必须在2之前,2必须在3之前。因此,例如,应该生成排列["x",1,"y","z",2,3],但不应生成排列["x",1,"y",
  • 2024-07-26CF932C Permutation Cycle
    题目传送门思路:个人认为构造题全靠感性理解,理解对了问题就迎刃而解了。(有点像做阅读理解)我们先感性地理解题目中所有变量和函数的含义。\(f\)函数是什么?当\(j\neq0\)时,\(f(i,j)=f(p_i,j-1)\),就是使\(j\)花费了\(1\)的代价,然后使\(i\)变为了\(p_i\)。这就
  • 2024-07-21C. Game on Permutation
    原题链接code#include<bits/stdc++.h>#definelllonglongusingnamespacestd;voidsolve(){intn;cin>>n;vector<int>p(n+4);for(inti=1;i<=n;i++)cin>>p[i];set<int>lose,win;//lose表示先移动必输的点f
  • 2024-07-14「杂题乱刷2」CF1506E Restoring the Permutation
    duel到的。题目链接CF1506E解题思路有一个显然的性质就是这个序列的前缀最大值是单调不降的。于是我们就可以对于每个位置考虑还可以填哪些数,对于字典序最小的肯定填当时可填的最小数字,对于字典序最大的肯定填当时可填的最大数字,因为你可以通过填一个数的方式来满足要求,因此
  • 2024-07-12杂寄
    杂寄Preface杂记不是鲜花emm1.next_permutation是怎么实现的首先有一个非常不好的现象,就是大家有STL之后就不学某些算法了,就比如sort和nth_element。让我们来看看next_permutation是怎么做的。next_permutation的时间复杂度是\(\mathcalO(n\logn)\)的算法分
  • 2024-07-11E. Permutation Sorting
    原题链接题解对于数\(i\)来说,如果其当前位置到最终位置上,有\(k\)个数不在最终位置,那么数\(i\)至少要走\(k\)次如果这\(k\)个数里,有\(m\)个在数\(i\)回到最终位置时,提前回到了最终位置,那么数\(i\)要走\(k-m\)次具象化就是一个一个的区间(起点为当前位置,终点
  • 2024-07-08**CodeForces CF1928B Equalize题解**
    ok兄弟们,今天本蒟蒻来做一篇小小的题解Equalize题面翻译有一个给定的长度为$n$的数列$a$,现在加上一个排列$b$,即$c_i=a_i+b_i$。现在求对于所有可能的$b$,$c$中出现最多的数的出现次数的最大值。translateby@UniGravity.题目描述Vasyahastwohobbies—addingpe
  • 2024-07-07Equalize
    Equalize题面翻译有一个给定的长度为\(n\)的数列\(a\),现在加上一个排列\(b\),即\(c_i=a_i+b_i\)。现在求对于所有可能的\(b\),\(c\)中出现最多的数的出现次数的最大值。translateby@UniGravity.题目描述Vasyahastwohobbies—addingpermutations$^{\dagger}$
  • 2024-06-24[题解]CF1741B Funny Permutation
    思路简单构造题,我们可以分为三种情况进行构造。\(n=3\)时,一定无解,输出-1。(你可以试试)\(n\bmod2=1\wedgen\neq3\)时,我们直接先输出\(n,n-1\),然后顺序输出即可。证明:令\(a\)为最后构造出的序列。那么,\(a_1=n,a_2=n-1,a_i=i-2(3\leqi\leq
  • 2024-06-17D. Prefix Permutation Sums
    原题链接题解1.缺少一个前缀和,缺少在哪了?如果缺少在\(i<n\)的地方,则会出现一个两个数之和,即缺少两个数否则会只缺少一个数2.两个数之和可能大于\(n\),也可能不3.虽然\(a_i\)达到了\(1e18\)但是\(n\leq2e5\),所以可以用数组记录出现的数code#include<bits/stdc++.
  • 2024-06-166.5
    今日python作业学习如下importitertoolsdefpermutations_combinations(n,m,letters):#排列序列permutations=list(itertools.permutations(letters,m))permutation_output=[''.join(permutation)forpermutationinpermutations]#组合序列,按字母升序排列combinati
  • 2024-06-12pythontest1
    importitertoolsdefpermutations_combinations(n,m,letters):#排列序列permutations=list(itertools.permutations(letters,m))permutation_output=[''.join(permutation)forpermutationinpermutations]#组合序列,按字母升序排列combination
  • 2024-05-14C. Permutation Counting
    原题链接题解给定一个数组,你知道怎么计算最终答案吗?设数组大小为\(n\),数组中的最小值为\(x\),大于最小值的个数为\(p\)则\(ans=n*x-(n-1)+p\),\(p\in[0,n-1]\)所以\(x\)越大,\(ans\)越大二分的前置条件有了二分\(x\)遍历数组判断\(k\)能否达到这个\(x\)code#i