zoukankan      html  css  js  c++  java
  • 2019.09.27考试报告

    考试心态又炸了,就像达哥那套周任飞一样,T1调到手抖,T2暴力打错没时间拍,T3测试点分治把自己给分治懵了,最后只拿到了链的24分

    T1

    做过此类题的可以很容易想到差分,复杂度O(nq),显然是过不去的。

    所以要优化差分,我们发现差分长这样:|

    所以便可以分别维护两个差分,递推出当前点的差分,复杂度O(n^2)。

    注意数组开2倍

    T2

    数据范围n<=30显然是道搜索题,加上记忆化可以拿到65分。

    用hash存储状态即可。题解说状态数最大值是Fibonacci前n+1项和,然而我不会证。

    T3

    性质1:操作之间无交集

    性质2:前后颜色一样的一定不反转,不一样的一定反转。

    性质3: 对于一个操作的边集S,路径条数为奇数点个数/2,路径和为|S|。

    首先用一个二元组(c1,c2)代表奇数点个数为c1,路径和为c2。

    先考虑子树的合并:

    设x为当前节点,y为x的儿子

    设w0/1为子树中伸/不伸上来一条边的二元组。

    初始化:

    w0=(0,0),w1=(INF,INF);

    w0=min(w0+f[y][0],w1+f[y][1]);

    w1=min(w1+f[y][0],w0+f[y][1]);

    然后考虑更新x的值

    f[x][0]代表x头上不反转,1代表反转。

    f[x][0]=min((w1.c1+1,w1.c2),w0);

    f[x][1]=min((w1.c1,w1.c2+1),(w0.c1+1,w0.c2+1));

    如果x头上的边是一定的,那就把不合法的赋值成INF即可

  • 相关阅读:
    个人总结08
    npm快速入门
    Activity简介
    SELinux
    正则表达式学习笔记(二)表达式的匹配原理
    git学习笔记(一)
    使用VSFTPD传输文件
    正则表达式学习笔记(一)正则表达式入门
    Linux基础(一)磁盘分区
    Shell脚本笔记(九)数组
  • 原文地址:https://www.cnblogs.com/AthosD/p/11601882.html
Copyright © 2011-2022 走看看