又TM是 NOIplus 测试( 9.2 下午 )


T1
某个RZ真是不长脑子,明明暴力能做偏要去搞卡特兰数
n<=2000诶
直接dp转移就好了
每个格子只能由下方和左方转移过来
求方案数直接相加就行了


T2
切了第一题以为下午也是一场欢乐赛,结果第二题就给了我一棒槌,让我醒醒,
为什么T2就有 NOIPD2T3 的难度了嘛,这还考个榔头

先找性质嘛,这是一棵树,所以一定会在叶子节点处终止
由于都要选最优策略,所以首先要找到当前点的最优策略是什么
最优策略又和父亲节点没有关系
每个点要确定两个,一个是最小最小,一个是最大路程

发现N这么大,而且每个点当前的选择还与儿子们的信息有关系
果断确定了树形DP
mx表示当前点轮到C走,走到叶节点的最大旅程
mi表示当前点轮到A走,走到叶节点的最小旅程
因为C走了之后该A走,所以mx只能由mi更新
所以要找到最大的val[e] + mi[to[e]]
求mi也是同理嘛
所以暴力60分就到手叻

然后就是毒瘤的满分算法
为什么会这么难写嘛,大家的式子都是一样的,结果辉神一百行出头
李巨一百行出头
我TM写了两百多行
真是B了狗了

由于对每个点再做一次DP代价太高,考虑换点操作该怎么搞
首先对于一个点来说,他原本不是根节点,后来他要变成根节点
对于他原本儿子信息是没有影响的,所以他要更新的消息就是从父节点那边走的最大值
所以定义nmx,nmi,代表从上面走的最大值和最小值

那么问题就来了( 下面求nmx )
他从父节点走出去有两种情况,

  • 1.他是父亲的mi
  • 2.他不是父亲的mi

然后一个附加情况

  • 3.他从父亲边走了之后又继续往上面走,就是往nmi处更新叻

所以考试的时候又猛然惊醒,还要维护当前节点的mi是哪个儿子mx是哪个儿子

对于第一种情况
我们就再对父亲求一个mi但是父亲既不能向自己走(to[e] != u)
也不能向父亲走,因为我们在附加情况中考虑叻(就是这个该死的维护,让我的代码变的巨复杂)
然后用这个来更新
对于第二种情况
可以直接用父亲现在的mi来更新

然后上面两种情况都要和附加情况更新
就是nmx[i] = max(val[ne] + nmi[fa] , nmx[i]);
但有特例不加
当fa = 1的时候就不能加

MD下午起床这么好的心情
遇到一道两百多行的毒瘤题真的是哔了狗了

T3
看一眼就知道是个基环外向树,
然后肯定要用什么线段树维护之类的乱搞
然后心态就炸了,noip模拟题出基环外向树
赫赫


题解
和我想的一模一样


这种题,想的出,打不来,有p用
我真是tcl
附上成绩

9.3日更新,
萱神两百四十多行A掉
李巨仍然挣扎在30分左右
辉神放弃治疗,开始失智.

原文地址:https://www.cnblogs.com/NoTimepleasssse/p/9577606.html