zoukankan      html  css  js  c++  java
  • 又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分左右
    辉神放弃治疗,开始失智.

  • 相关阅读:
    windows下安装mysql教程
    python生成器实现杨辉三角
    python默认参数问题
    python中判断素数的函数
    extract()和extact_first()的区别
    硬连接和软连接的区别
    du与df的区别
    命题逻辑
    关于 better-scroll 设置了以后无法滚动或不生效的问题
    Maven *IDEA*
  • 原文地址:https://www.cnblogs.com/NoTimepleasssse/p/9577606.html
Copyright © 2011-2022 走看看