12.2 省选训练总结

题目

  • LCT
完成情况题目出处
LCT ACBounce 弹飞绵羊BZOJ 2002 [HNOI2010]
Cave 洞穴勘测BZOJ 2049 [SDOI2008]
链剖AC树的统计 CountBZOJ 1036 [ZJOI2008]
Housewife WindPOJ 2763
魔法森林BZOJ 3669 [NOI2014]
  • 可持久化数据结构
完成情况题目出处
平衡树AC普通平衡树Tyvj 1728
郁闷的出纳员BZOJ 1503 [NOI2004]
Persistent BookcaseCodeforces Round #368 707D
ACK-th NumberPOJ 2104
花神的嘲讽计划ⅠBZOJ 3207
CouriersBZOJ 3524 [POI2014]
ACCount on a treeBZOJ 2588 SPOJ 10628
谈笑风生BZOJ 3653
权限题简单题BZOJ 2683
权限题Peaks加强版BZOJ 3551 [ONTAK2010]
ACMEX-QueryCodeforces Gym 101237A
GERALD07加强版BZOJ 3514 [Codechef MARCH14]
任务查询系统BZOJ 3932 [CQOI2015]
Gty的妹子序列BZOJ 3744
可持久化并查集(&加强版)BZOJ 3673-3674
Dynamic RankingsBZOJ1901 ZJU2112
网络管理 NetworkBZOJ 1146 [CTSC2008]
最大异或和BZOJ 3261
ALOBZOJ 3166 [HEOI2013]
XRQRSBZOJ 4546 Codechef

LCT

写都还写不来,只有口胡了

  • bzoj2002 [Hnoi2010]Bounce 弹飞绵羊

一个点到 root 的链上就是他的轨迹,所以改的时候,只需要 cut access 就可以了。并且答案是左子树 size+1

  • bzoj2049 [Sdoi2008]Cave 洞穴勘测

强行把 x 的树拉到另一颗树中,然后splayx,就可以 link 了,然后打上标记。

  • bzoj1036 [ZJOI2008]树的统计Count

对于修改,只用 splay 他就直接改。而对于链查询,我们把u换成辅助树的根,然后 access splay ,就可以了。对于修改,像之前一样,打标记。

  • poj2763 Housewife Wind

边权不好做,那么就把边变成一个点,就是新加一个 val 为边权的点就可以了。

  • bzoj3669 [NOI2014]魔法森林

对于有序的的 a ,我们需要维护b的最小生成树。如果现在加入的边为 ab 那么 =min(a+1nb)

可持久化数据结构:

  • Codeforces Round #368 (Div. 2) D

注意到操作只有对行的,所以强行可持久化(开一个巨大的二维数组)。

  • bzoj3207 花神的嘲讽计划Ⅰ

Hash 后在主席树上查存在。

  • bzoj3524 [Poi2014]Couriers

注意到,区间众数的话,他的那边的数的个数一定比另一边要多,所以我们每次往多的儿子走。查到最后就是答案。(也可以用线段树维护矩阵,然后用众数的方法搞)

  • bzoj2588 Spoj 10628. Count on a tree

针对每一点建他到 root 的主席树,那么可以由他的父亲转移,只用改那一条链就可以了。答案应该是 ansu+ansvanslcaansfalca 。当然,这个如果 lca 就是 root 那么就不用减后面的那个了。还有要注意一点,就是传的时候要传 root 的值,害得我调了好久。

  • bzoj3653 谈笑风生

我们把答案分成 a b的祖先与 b a的祖先。后者好做,主要考虑前者。我们对于深度建主席树,然后统计答案时就直接那段区间和就可以了。

  • bzoj2683 简单题:

动态主席树,强行开新的点。

  • bzoj3551 ONTAK2010 Peaks加强版

就是对于这样的图,一定只有最小生成树上的边有用,所以,我们建出最小生成树,然后化边为点,这样得到图是一种神奇的图。他的性质是:
1.二叉树(好吧这题意义不大)
2.原树与新树两点间路径上边权(点权)的最大值相等
3.子节点的边权小于等于父亲节点(大根堆)
4.原树中两点之间路径上边权的最大值等于新树上两点的 LCA 的点权
所以对于每一个询问,答案就是他到 lca lca ans 的路上的最小值,这样, dfs 序上搞。

  • Gym - 101237A - MEX-Query

区间mex,这个与之前的众数有点像,但是我们主席树中存这个值出现的最右位置,这样就可以一直向一边查询了。原理是:每个叶子节点存这个值出现的最右边的值,然后合并时按照min合并,查的时候只用查r那棵树,然后根据最值来搞。(因为避免了值的重复)。

  • bzoj3514 Codechef MARCH14 GERALD07加强版

预处理出每条边可以替代那条边。然后 lct 解决。

  • bzoj3932 [CQOI2015]任务查询系统

每个任务的时间一定是一个区间,所以,利用差分的思想,在 l 时加入一个任务,r+1时删除这个任务就可以了。把区间化成了单点修改。

  • bzoj3744 Gty的妹子序列

先分块处理出单独一块的答案,然后对于零散的点,直接主席树暴力算就可以了。

  • bzoj3673 可持久化并查集 by zky && bzoj3674 可持久化并查集加强版

并查集实际上就是一个数组。那么这道题就是可持久化数组,你连可持久化线段树都会了,那还不会可持久化数组?但是这道题还要注意,应该用按秩合并,才能支持回滚。

  • bzoj1146 [CTSC2008]网络管理

树状数组套主席树。带修主席树模板题。

可持久化Trie:(类似主席树,只不过是0,1区间)

  • bzoj3261 最大异或和

记录一个前缀和(之所以不记后缀是因为后缀在变),然后用 trie 常用的贪心法求解。所以要用到可持久化 trie

  • bzoj3166 [HEOI2013]ALO

先预处理出每个点作为次小值的区间,然后在 [li1] [i+1r] 两个区间上查答案。至于预处理,先把元素从大到小排序,在一个个加入,这样类似 odt 的方式就可以了。

  • bzoj4546 codechef XRQRS

可以写可持久化 trie 与主席树结合。但是实际上不用主席树。因为可持久化 trie 也可以表示大小。(相当于二进制的主席树)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值