省选前题目总结

省选前题目总结

先写几句废话

OI生涯就要结束了

!@#$%^&*()

所以不写废话了

4.5号第一轮省选,之前准备小高考耽误了一段时间,因此马上得抓紧了

感觉现在题目不太能做得动,所以得多做题

做完题要总结

提高效率

其实以上还是废话

下面放上做的题目的总结,模拟赛的总结另开一篇写吧

nflsoj #359. 【六校联合训练 省选 #1】C

  • [x]

Solution: 从根开始,每次找到一个当前点的后代,然后把这个后代的子树扒掉。扒掉的方法还是找到这个后代的一个后代,把其子树扒掉,这样不停找下去。每次找后代复杂度 \(O(\log n)\),方法就是维护一个点集,表示当前还没有被拔掉的点,然后在里面二分,找到某个位置,使得当前点不在这个点左侧所有点组成的连通块上,而加进这个点之后就在了,由于根节点一定没有被扒掉,所以不可能是左侧点组成连通块是它的子树,只能是加进去这个点为它的后代。这样每个点最多被找一次(找完就会扒掉它),总复杂度 \(O(n\log n)\)

nflsoj #358. 【六校联合训练 省选 #1】B

  • [ ]

Solution: 这题分为三个问。第一问答案就是奇数度数点的个数除以2,显然这样的点有偶数个,可以两两连起来,然后留下两个点度数为奇数,其它每个点度数均为偶数,根据一笔画原理,可以一笔画出来,然后把加上的边拆掉,剩下就是路径数,正好是奇数度数点个数除以2。第二问显然二分答案,然后树形 \(\text{dp}\),要求路径数量最小,那么每个子树路径数量显然也要最小,令 \(f[i]\) 表示 \(i\) 为根的子树中路径数量最小时,\(i\) 这个点到 \(fa[i]\) 所在路径的长度最小值,也就是这个子树内部唯一延伸出来的路径的长度,转移显然。第三问依旧是 \(\text{dp}\),首先基础状态是 \(f[i][j]\) 表示 \(i\) 这个点的子树中满足前两个任务的时候, 剩下来那条路径的长度为 \(j\) 的方案数,转移时可以暴力枚举匹配方案,因为度数小,所以可以通过 \(n \leq 1000\) 的点;然后扩展该算法,首先对树进行长链剖分,我们发现 \(j\) 这一维小于等于深度,对 \(j\) 这一维建线段树,然后两个问题,一个是求两个儿子匹配的方案数,即 \(\sum_{i+j\leq len} f[a][i]\cdot f[b][j]\),可以枚举 \(i\),然后区间和解决,另一个是对于 \(x\) 的任意一个儿子 \(a\),用它延伸出来那条路径的方案数更新 \(f[x]\) 的线段树,我们对于非长链的儿子暴力枚举链长单点修改,对长链儿子打标记。

nflsoj #362. 【六校联合训练 省选 #2】礼物(gift)

  • [ ]

Solution: 大力推式子,最后式子大概长这样

\[F(x)=\frac{(1-x^{k+1})^{n-m-1}}{(1-x)^{n-m+1}}(1+(k+1)x^{k+2}-(k+2)x^{k+1}) \]

分式上面的部分用二项式定理展开后变成$$\sum_{i=0}{n-m-1}\binom{n-m-1}{i}(-x)^i$$

下面的部分也可以用广义二项式定理展开变成$$\sum_{i=0}{\infty}\binom{a-b+i}{i}xi$$

对着式子敲代码,然后最终复杂度\(O(\frac{\sigma_1(\gcd(n,m))}{k+1})\)

综上所述,不知道啥玩意

nflsoj #376. 【六校联合训练 省选 #7】小球(ball)

Solution: 简单 \(\text{dp}\)

nflsoj #357. 【六校联合训练 省选 #1】A

Solution: 考虑每个 1 最后的位置,对于一个 1,最后一定是要么一直向左,要么被前一个 1 卡住,从左到右考虑当前空位的个数,然后算出每个 1 最后走到哪里。

posted @ 2019-03-24 19:13  wawawa8  阅读(350)  评论(1编辑  收藏  举报