The Hangzhou Normal U Qualification Trials for ZJPSC 2021](https://codeforces.cc/gym/322466)
A. Array Permutation:
题意:让你构造一个长度为n的数列,当前长度为m,每次随机一个([1,n-m])的数x,然后生成一个([1,n])的全排列,问这个数列有多少种构造方法。
- 画出所有的排列,猜想答案为(2^{n-1}).
C. Circle Minimal
题意:给你n个点,n条边,你可以调整一条边,但要保证图连通,问整个图构成的最小环。
考虑要使整个图连通,移动的边必然在环上。那么把这个图拓扑排序一下,找出环上所有的边。
-
考虑一个环的三条边。
-
枚举图中所有点,枚举他的两个出边。
-
两条树边:找环上最小的边拼成一个环。
-
一条树边+一条环边:维护环上的边set,找最小的不是这个环边的环边拼成一个环。
-
两条环边:维护环上的边set,找最小的不是这两个环边的环边拼成一个环。
-
但是要枚举这个环的4个出边,保证以上三种情况都枚举到,因为一个点最多两条环边
-
自定义set写错了,wa了若干发
G. Guess Strings
题意:给你一个长度([2,100])的字符串,由两种字符构成,每次可以问一下某字符串是不是这个字符串的子串。问你最后的字符串。询问小于(200)次。
-
不妨先问26次,问出两个字母。
-
先问一下ab和ba出现了那个。
-
然后向前一直查他的前缀,问一下aab,bab有没有,若都没有则前缀结束,反过来查后缀。
-
但直接尝试复杂度(O(2n+26)),貌似不行。
-
每次查前后缀,随机定查a还是b,期望的复杂度是(O(frac{3}{2}n+26)),这样便小于200了?
H. Hsueh- And Treasure
题意:第(i)次走(i)步,每次向上下左右,问到((x,y))最少需要多少步
-
直接二分出一个最小步数。
-
若差值为偶数,通过向上向下可以调整,否则一直加到差值为偶数。
-
然后贪心拼坐标,当当前要走的步数为奇数,向前拼1,否则拼y。
I. Iaom and Chicken feet
题意:
问一个图有多少个这个鸡脚。
- 把2点拎起来,枚举四号点,答案就是(Sigma C_{size2-1}^2 C_{size4-1}^3)
J. Jew Sorting
题意:一个序列,每次删除前半段或后半段,问最少需要操作的次数,使得序列递增。
- 线段树维护区间是否单增,pushup的时候合并一下。然后查一个最大的区间,就是答案。