2016中国大学生程序设计竞赛(长春)
1002.Fraction
1005.The Fastest Runner Ms. Zhang
- 最后的图形是个菊花状的,即一个环上的每个点上长了一棵树。
- 那么方案分两种:两个叶子的根为环上两个不同点,或者为同一个点。
- 记\(f(u)\)表示遍历以\(u\)为根且最后返回\(u\)的代价,\(d(u,v)\)表示环上两点的最近距离。
- 从1到2的代价为$$\sum{f_i}+2(d(u,v)-1)+(L-d(u,v))-dep(1)-dep(2)$$
- 整理下,即表示为$$C+d(u,v)-dep(1)-dep(2)$$其中\(C=\sum{f_i}+L-2\)
- 如果给环定义一个起点,则\(d(u,v)=d(v)-d(u)\),那么代价可以表示为$$C+d(v)-d(u)-dep(1)-dep(2)$$可以看出这是一个可以用单调队列维护的东西。
- 如果两个叶子在同一个环上呢?显然我们想让这两个点之间的距离越大越好,那么就是求一下树的直径就好了(写的时候忘记可能跨过环上的点了。。。疯狂WA)。
1006.Harmonic Value Description
- 注意$$2k\le n$$
- 最小值的一个序列$$1,2,...,n$$此时\(\sum{\gcd(p_i, p_{i+1})}=n-1\)。
- 每次把相邻偶数放一起,则gcd增加1。
- 考虑到只有\(\lfloor\frac{n}{2}\rfloor\)个偶数,将\(k\)个连续偶数放一起即可。
1007.Instability
- 1、2个点是稳定的;6个点以上是不稳定的,直接组合数求下即可。
- \(\binom{50}{5}\)约为\(2\times 10^6\),\(\binom{5}{2}\)用状压连通点即可判断。
1008.Sequence I
1009.Sequence II
1010.Ugly Problem
- 每次构造前缀相同的回文串
- 若比\(s\)大,则选择离中心最近的非零位置减1。
- 这样两次即可达到长度减半,所以\(n\)不会超过50。
1011.Binary Indexed Tree
- 考虑某个位置\(p\)的贡献:当一个区间端点含\(p\)而另一个不含的时候,\(p\)会贡献一次,如果统计出含\(p\)的个数\(cnt\),则总贡献为$$(n+1-cnt)\cdot cnt$$
需要考虑和0配对。
- 考虑一个位置\(x\),会访问到\(x, x\oplus lowbit(x),\cdots\)这些位置。
- 这些位置在二进制表示下为\(x\)的一个前缀且末位为1。
- 容易想到数位dp,\(f(i,last,limit)\)表示到第\(i\)位末位为\(last\)是否达到上界\(limit\)的方案数。
- 需要注意的是,记忆化时需要记录\(ans\)的增量,否则会少记录一些方案。
posted @
2016-10-04 23:01
mcginn
阅读(
534)
评论()
编辑
收藏
举报