省选模拟35

刚自闭改完T2,我简单写吧。。。

A. two

有一段复杂的描述简单说就是一个点在子树内,另一个点在子树外。
60pts的暴力我用bitset存祖先卡过去了
正解:
0蓝1红。
按dfs序建线段树,那么对于该树上已被删除的一条边(p,q),fa[q]=p,现阶段需要删除的点对满足,一个在[in[q],out[q]]区间中,另一个在区间外。
做法是以一端点的dfs序为下标,值是另一端点。
如此建两棵线段树,并在节点内按照另一端点排序。
这样的话删除操作就是单调的,直接扫描即可。

B. bracket

30pts枚举端点dfs暴力
处理单次询问复杂度很高,询问数又很多,可以想到点分治。
问题在于合并括号序列。
设重心为u
点对i->j合法,那么i到u的u处的前缀和一定与j到~~~的互为相反数,且i取到i-u所有前缀和的最大值,j取到最小值。
记录最值出现次数得出段数
所以分治到u,dfs处理前缀和为正出发的一部分f,以及目的g
合并时卷积优化。
细节较多。。。

C. sum

有个结论:最优解中的元素最多只有两种质因子,若有两种则一个<=sqr 一个>sqr
好像可以基本不等式yy下。但不会证。。。
如果没有两种质因子的情况,那么每个质数取到<=n的最大幂次数。
在该前提下,如果质因子配对能更优,那么连边
跑最大费用流得解。

posted @ 2020-03-02 22:30  hzoi_yzh  阅读(76)  评论(0编辑  收藏  举报