Day 1
toy
水题不解释
running
这次比赛排序真心有问题,这一题事实上是两天中最难的。
每个玩家x−y的路径,设l=lca(x,y),可以分割为x−l,l−y
先看第一种
如果有一个点k,x−l路径能给这个点贡献,那么必然满足
deep[x]−deep[k]=time[k]
明显可以移项
deep[x]−time[x]=deep[k]
那么两边都是独立的了, 在x和l处分别打上加和减的标记,维护一个桶,然后跑dfs,那么在进入这棵子树前与加完这棵子树标记后的差值,也就是这个点的答案了。
情况2类似处理
当然了,这个东西你也可以打一个线段树合并之类的东西来弄,某些大(sha)牛(bi)居然打了链剖。。。
classroom
这题应该是除两天第一题以外最简单的了。
话说NOIP居然考期望。。
明显可以DP嘛
设f[i][j][0,1]表示到第i节课的最小消耗,用了j次机会,0表示申请,1表示不申请
跑个floyd先
考虑转移
这门课不申请,就一定在原教室,申请,就有一定概率在另一个教室。
转移就可以直接来了,上节课选,不选,这节课选,不选,推一下就好了。
Day 2
problem
杨辉三角预处理,然后弄个前缀和即可,我比较蠢,询问是O(N)的,然而完全可以再随便推一推O(1)询问
earthworm
这题看你脑洞大不大
有一个性质
先切掉的蚯蚓一定比后切掉的蚯蚓长(显而易见),切完以后,先切掉的蚯蚓和后切掉的蚯蚓对应的两对来比也是先的长。
什么意思呢?
比如说两条蚯蚓长为x,y,x>y
都切完以后为x1,x2,y1,y2
x1>y1,x2>y2
因为原本就是x长,两个都切到以后都是有一次没有长,那么这很显然。
所以呢,新切出来的两条蚯蚓对应来讲,一定是单调递减的
所以插入位置一定是不断向后的,然后就线性复杂度解决
angrybirds
看数据范围,明显状压(然而我在考场上并没有看出来)
直接状压是O(2N×N3)的
然后呢,可以N3预处理某两个点所可以打掉的点的状态
然后呢,贪心的想,每个猪早打完打都得打,那么不如早打,所以枚举的第一个猪按顺序取也是一样的。
然后就是O(2N×N)