A.环
题意:l个长度为n的恰好有k个1的循环同构01串,且满足s[i]--将某个1和右侧的0交换-->s[i+1],构造方案。n,l<=100,T<=10
构造题无思路emm
观察题目给出了80%的n k互质,可以猜测是有解的充要条件(虽然考场上没往这想)
证明考虑下标和在各自满足两个限制下的同余式联立
互质说明k关于n有逆元,以下数字都是%n意义下
若有解必定存在一种构造方案(s[i]={frac{i}{k},frac{i+1}{k},...,frac{i+k-1}{k}})
证明:
(s[i+1][j]=s[i][j]+frac{1}{k}),统一右移(frac{1}{k})满足循环同构。(模意义下分布有交错,但整体平移)
(frac{i}{k}+1=frac{(i+1)+k-1}{k}),也就是说把s[i]的开始接到s[i+1]的结束,1向右交换。
B.DNA序列
题意:给出n个串,每个串截取非空前缀按任意顺序拼成S,最小化S的字典序。n l<=100
30pts保证顺序的部分分:直接从后向前暴力贪心。
提示我们要求顺序。
发现求n个串的最短前缀,使其无限循环都<s[i],这是第一维升序,剩下的且不存在循环前缀的部分降序。
这样做的正确性在于我想要开始尽可能小,由于接在一起,我想要第一维相同的最后一个的后半部分字典序小,所以第二维降序。
n l很小,暴力排序即可
C.探寻
题意:n个点的树,除根节点外有收益以及父边的花费,目标是到达给出的一个叶子节点,求从根节点进入需要额外带多少钱。n<=2e5
发现类似打怪兽模型,为了便于处理,把目的地的收益设为inf,且同时允许负钱数,问题转化为求最大化走完一棵树的按dfs序钱数的前缀和中负数的最小值
考虑过程,一棵子树x如果总收益(以下的收益都减去了花费)为负,那么一定不会被进入
如果x是当前最优,说明选完x的父亲紧接着选x,这不就是dy上课讲的emmm
set维护当前收益非负的且花费最小的点,容易知道这样每次取begin最优
并查集维护代表元素,连通块内部的顺序固定,每加入一个点相当于确定了一步顺序,都累计到代表元素上。
这样对所有连通块维护下答案即可。