先开个坑,有空慢慢更。
day1
【A】留着坑。
【B】
学到了一个有趣的姿势。
我记得求出拓扑图上每个点能到的点数只能暴力bitset,现场做的时候就束手无策;
但本题是有性质的,它只是判断是否是全集。缩点后,我们先对图做一遍拓扑排序。显然,对于拓扑序上的一个点x,判断其合法性等价于:它前面的点都能到它且它都能到它后面的点。现在只考虑前面部分的判定(后面是对称的)。
给出简单的判定结论:如果在图中删掉x拓扑序之后的点,那么“x前面的点都能x”等价于“x前面的点出度都大于0”。
证明很显然。如果有一个出度=0,它显然不能到x;如果每一个都大于0,至少能转移到一个它后面的点,归纳一下肯定能到x。
【C】留着坑。
【D】
这个经典拓展姿势以前见到过:每次删除选的最大的数并加上它后面的那个;或者不删除它直接加上它后面的那个。
今天画了画发现这样也不会重复统计(以前总记得要哈希一样的)。维护字典序的时候,不需要暴力开主席树的哈希;思考一下,答案的位数不会超过20,所以直接暴力存下长度为20的选择方案即可。
【E】
先缩点双。容易(?)发现,符合要求的图案只能是:(1)恰好一个环。(2)存在度数大于2的点对(u,v),然后全是u->...->...->...->v的路径(它们长度当然要相同)。(注意u可以等于v)。直接根据这个性质判定即可,细节处理略烦。
还没过……
【F】
考验智商的坑题……直接暴力DP看似是\(N*max(a_i)\)的,但只要我们将\(a_i\)先从小到大排序,那么复杂度就是\(\sum a_i=10^7\)……