zoukankan      html  css  js  c++  java
  • 省选模拟48

    A.长度为n的01串,m次询问区间([l_i,r_i])内结尾的前缀中最大的一对lcs。n m<=1e5

    首先翻转串,然后就是喜闻乐见的后缀lcp问题
    莫队很好写,用set动态维护下排名序列,由于带log,我只拿了50。
    正解考虑sam,答案为[l,r]在树上结点中点对lca的len最大值。
    离线询问,对串做扫描线,每次处理i,parent树上编号同前缀编号,那么i点和前面所有点形成的贡献在祖先链上。
    对结点按时间染色,当一个结点已经染色为j,就可以更新区间[j,i]的答案,这个可以用bit。
    由于对于同样的len,j越大越优,所以用i直接覆盖。
    链覆盖,找同种颜色深度最大的(len优)
    lct的access完美支持以上操作

    B.n个点的树,可以删x条边同时加x条边(要求树形),求每个结点满足到所有结点距离和最小的(min(x))。n<=1e6

    必要转化:到所有结点距离和最小的点->重心!
    这个可以用调整法证明,假设一条边u-v,v方向点多,那么向v移动增量为负更优。
    那么调整到终态,点u不存在sz[v]>n-sz[v]-1,即(max(sz[v])<frac{n}{2}),这就是重心的充要条件。
    首先找到原树的重心rt,求出以rt为根的子树的sz,从大到小排序,做前缀和。
    分别考虑rt的每个子树中的答案。
    那么前缀和*2>=n的除了当前考虑的子树的部分一定是必砍的,因为如果不砍那么重心方向的sz必定不满足。
    假设考虑到点u,所有子树方向是一定满足的,因为祖先有重心嗯。
    然后可以把所有砍掉的点都直接接到u上,因为都是sz<n/2的子树。
    接下来只要保证祖先方向剩下的点<n/2,这个就记录判下就好。
    时间复杂度仅为(O(n))

    C.给出长度为n排列A,构造一个合法的括号序列满足:(i)为左括号时向(A_i)连边,最后每个点的为1。n<=100

    匹配问题,限制网络流没法做。
    对于有排列问题,套路地先(i-A_i)连边建下图找性质,最终会形成多个环且无单点。
    发现只要确定每个环上一个点的状态,其他可以推知。
    这样直接爆搜是(O(2^{frac{n}{2}}))
    好像再/2就可以做了,然后发现大小为2的环一定是编号小的为(,大的为)
    剩下的直接搜(O(2^{frac{n}{4}}))加点剪枝就做完了。

  • 相关阅读:

    HTTP请求和响应格式
    什么是Alpha,Beta,RC,RTM,CTP版
    GE的分级体系与卫片的分辨率关系
    如何下载这幅DigitalGlobe卫星图?
    Google Maps/Earth下载图片封IP的最佳解决方法
    MAPGIS把经纬度坐标转换为大地坐标
    从Google卫星地图服务器上获取卫星照片的方法收藏
    谷歌地球 GoogleEarth软件介绍
    Oracle 查找表的字段信息
  • 原文地址:https://www.cnblogs.com/hzoi-yzh/p/12513773.html
Copyright © 2011-2022 走看看