NOIP2016 提高组 题解

来源:互联网 发布:淘宝怎么才能没有同款 编辑:程序博客网 时间:2024/06/05 00:42

Day 1

toy

水题不解释

running

这次比赛排序真心有问题,这一题事实上是两天中最难的。
每个玩家xy的路径,设l=lca(x,y),可以分割为xl,ly
先看第一种
如果有一个点kxl路径能给这个点贡献,那么必然满足
deep[x]deep[k]=time[k]

明显可以移项
deep[x]time[x]=deep[k]

那么两边都是独立的了, 在xl处分别打上加和减的标记,维护一个桶,然后跑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)

1 0
原创粉丝点击