【7.14】
T1
给出汉诺塔中间结果的某一步,求是否合法,如合法输出还有多少步完成。
T2
【7.15】
T2
等价于求位置i左边位置k满足【k,i】是回文串的k之和,建出回文自动机后,每个节点计算出fail树内长度和,以及子树深度,直接算即可。
T3
鬼畜的网络流,最大权闭合子图,S向正权点连边,边权为点权,负权点向T连边,边权为点权相反数,原有边流量改为正无穷,然后用正点权减去最小割即为所求。
【7.16】
T1
推式子杜教筛。
T2
杨氏矩阵+推式子NTT优化
详见https://blog.csdn.net/werkeytom_ftd/article/details/79032667
【7.17】
T1
考虑所有预处理左下方没有点的集合A,右上方没有点的集合B,然后最优答案一定在其中产生。
把每个不在A、B集合中的每个点求出其横纵坐标在A、B中的位置,然后转化为一个矩形,求矩形最大重复区域即可。
T2
鬼畜网络流
T3
给定一个环加外向树,有m种颜色,问本质不同的染色方案有多少种。
强行拼题,先树哈希判定同构,然后树D求染色方案数,把环上每一点对应的子树的哈希值求出后,跑一次KMP求最短循环节,然后Polya计数。
【7.19】
T2
定义一个可重数集的价值为:集合中所有数的平均数减去它们的中位数。 现在给定 n 个数 ,请你找出这 n 个数中的一个非空子集,使得这个子 集的价值最大。
正解是三分,然而窝事实上在固定住除中位数之外的数后,那么中位数一定是尽量靠左比较优的,所以枚举中位数所在位置(我只枚举了5000),然后暴力求即可。
T3
把AC自动机建出来后直接列方程看下一步能跳到哪(就像正常匹配字符串那样),然后高斯消元。
【7.21】
T1
把树的奇偶层视为二分图,那么等价于一个完全二分图中生成树个数,直接矩阵树定理求出后乘个组合数即可。
T2
显然存在完美匹配说明左边选出K个点后,右边的点数>=K,所以只要限制住右边=K即可。考虑把左边的点权加上INF,右边减去INF,然后求最大闭合子图即可。
T3
给定序列,操作有区间加,以及区间第K小。
分块维护每个块内的值域的前缀和。
每次查找时二分答案,每个整块内由于维护了值域前缀和,所以查询是O(
N−−√∗logN
N
∗
l
o
g
N
)的。
修改时由于窝们维护的是前缀和,整块直接打标记,而散的如果值是x,直接将值域前缀和的【x,x+k-1】区间-1即可。
O(
N−−√∗len
N
∗
l
e
n
)。
实际运行常数很小~~~
【7.22】
T1 鬼畜贪心不会。
T2 拼题,主席树+trie(事实上可以只用trie,只用主席树要多个log查每一位是否存在)