您的位置:首页 > 其它

12.2 省选训练总结

2017-12-03 19:33 218 查看

题目

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的树拉到另一颗树中,然后splay(x),就可以link了,然后打上标记。

bzoj1036 [ZJOI2008]树的统计Count

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

poj2763 Housewife Wind

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

bzoj3669 [NOI2014]魔法森林

对于有序的的a,我们需要维护b的最小生成树。如果现在加入的边为a,b那么答案=min(答案,a+树上1到n路径上的b的最大值)。

可持久化数据结构:

Codeforces Round #368 (Div. 2) D

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

bzoj3207 花神的嘲讽计划Ⅰ

Hash后在主席树上查存在。

bzoj3524 [Poi2014]Couriers

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

bzoj2588 Spoj 10628. Count on a tree

针对每一点建他到root的主席树,那么可以由他的父亲转移,只用改那一条链就可以了。答案应该是ansu+ansv−anslca−ansfalca。当然,这个如果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

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

bzoj4546 codechef XRQRS

可以写可持久化trie与主席树结合。但是实际上不用主席树。因为可持久化trie也可以表示大小。(相当于二进制的主席树)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  省选