0%

CF764(div3)记录

qwq

A. Plus One on the Subset

签到题,求一个max-min

B. Make AP

签到题,枚举三种情况看能不能整除

C. Division by Two and Permutation

签到题,但是比较有意思。

大意是给定一个长度为$n,(n<50)$的数组$a$,你可以对任意元素进行若干次操作,每次操作将$a_i$替换为$\lfloor \frac{a_i}{2} \rfloor$,问能不能通过若干次操作后,将$a$变成一个$n$的排列

对于每一个$a_i$,我们能知道它可以取到的值有哪些。显然一个二分图匹配就能搞定它,但是这样有点大炮打蚊子了。

考虑将$a$递减排序,维护一个$used[i]$数组,代表$i$这个数已经被选了。依次从排完序后的数组中取出一个数,得到它能表示且没有被选过的最大的数。如果一个$x$不能选出任何一个数,则失败。

因为一个更大的数有着更多的选择可能性,可以贪心地让它选择出更有可能只有自己才能表示的数,并且可以证明这是正确的。

D. Palindromes Coloring

tag上有二分,但是并不需要二分

给定一个长度$k$的字符串和$n$种颜色,需要对字符串进行染色,使得每一种颜色都有字母被涂到(可以有字母不被涂色),且涂上相同颜色的字母可以通过重新排列形成一个回文串。求这$n$个回文串里最小的长度最长是多少。

观察回文串的性质,可知对于出现的相同字符,要么出现偶数次,要么只出现一次奇数词,且出现为奇数次的字符在最中间。

统计所有的字符出现的次数,对于每一个字符$c$,计算它出现的偶数对的数量$cnt=\sum_c (times[c] / 2)$,和它们除以2的余数之和$rm=\sum_c (times[c]\mod 2)$。

我们把偶数对均匀分配给每一个串,对于剩余的字符,如果每一个串都能得到一个单个字符,那我们对最小的长度补上1。

所以答案是$cnt/n*2+((cnt\mod n) * 2+rm\geq n)$

E. Masha-forgetful

每一个长度大于$2$的子串都可以由长度为$2,3$的子串组合而成。

考虑$dp[i]=1$,if目标串s的前$i$位可以通过连接子串得到,else 0。

状态转移方程显然,只需要统计所有的长度为$2,3$的子串,求$dp[m-1]$即可。

F. Interacdive Problem

考虑二分x在mod n下所在的区间$[l,r)$。进行”$+\ n-m$”操作,如果$\lfloor \frac{x}{n}\rfloor$增加,那么$x$在区间$[m, r)$,否则在$[l,m)$。进行操作后,对区间进行”$+\ n-m$”(模n意义下)的修正,保证关系不变。注意如果$r$变为$0$,则应将其改为$n$。

G. MinOr Tree

求边权或意义下的MST。

假设答案的mask位全1,从高位开始,假设不取有这个significant bit的边,这个图能不能联通。如果能联通,则在强制不取这样的高位;否则允许取该位。向低位搜索时保持之前的限制,并讨论加上新限制后的连通性。


小总结:

很久没有做题了,手(脑子)生了不少,一些很显然的情况没有注意到。之后会适当恢复一些练习,保持自己的状态。总体而言这套题难度适中,让我收获很多。