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

    A. 大佬的难题

    题意:三维都是排列的三位偏序问题。n<=2e6
    CDQ 两个log过不去
    dy讲过的题。
    考虑容斥,设A为满足([a_i<a_j])条件的二元组个数,B C同理
    要求(Acap Bcap C)
    根据(Acup Bcup C=A+B+C-Acap B-Acap C-Bcap C+Acap Bcap C)
    (Acup Bcup C=n(n-1)-(-Acap Bcap C)=n(n-1)-Acap Bcap C)
    然后计算二维偏序。

    B. 回文串

    发现变换中出现的串就是两个子串缩前缀到长度lcs过程中的子串(只考虑r方向)。
    暴力hash+map随便搞,考虑不那么暴力的结构。
    先不考虑add操作
    建出回文树,每个点附上权值len*|right|,那么询问就是树上两条路径的并的权值
    其实这我想麻烦了,只要判断len[lca]和lcs(lcp)的关系就行,因为lca及以上一定都是lcs中的串了。然后这个判断只要比较s[r-len[lca]]是否相同
    现在多了add操作,对于增量建图的回文树来说在线不太现实。
    把操作离线,在最后的串上跑Pam建树,这里有个优化是正串和反串的回文树形态相同(因为对称),所以正串建完得编号,然后直接在上面跑反串得编号。
    需要保证当前未扩展到的点没有权值,这个只要让修改区间长<=(nowlen),倍增跳。
    树链剖分维护,复杂度两个log

    C. 营养餐

    树上阶梯nim博弈的变形。
    阶梯nim博弈:n堆石子,合法操作为在i堆取>=1个石子放入i-1堆,若i=1则直接移出。先手必胜的充要条件为奇数编号的堆的石子个数异或和不为零。
    证明:
    把从奇堆中取石子视为nim博弈中的拿走,放入偶堆视为丢弃,局面为各奇堆中的石子数。
    若对手操作奇堆,那我跟着按照nim博弈的最优策略操作奇堆,相当于两个人在进行普通的nim博弈。
    若对手操作偶堆,假设在i向i-1移动石子数为x,那我在i-1把x个石子移动到i-2,局面不变,且在i=2时(最后一步)主动权在我手中。

    关于为何不是偶堆异或和,考虑最后一步。

    阶梯nim博弈在树上依然成立,数量不守恒也可以。要求奇数深度的堆异或和

    回到本题,设(num_i=a_i-sumlimits_{jin child_i}a_jb_j)
    根据题限(num>=0)
    如果把(num)看作石子,在(i)取走(x)个,(i)(x)(fa_i)(b_ix)
    注意(b_i=0)时对父亲没有影响,要看作根。
    于是对每棵树单独求,由于是独立的公平游戏,森林再异或起来判断。

  • 相关阅读:
    memcached整理の基本使用
    memcached整理の编译
    linux命令の删除文件和文件夹 复制粘贴文件和文件夹
    ANSIBLE工具
    RSYNC服务
    FTP服务
    Mac运维安装软件
    WebSocket协议
    TCP三次握手和四次挥手、HTTP协议
    GITBOOK/HEXO TRAVIS GITHUB-PAGES 博客搭建
  • 原文地址:https://www.cnblogs.com/hzoi-yzh/p/12639101.html
Copyright © 2011-2022 走看看