摘要:
点分树一点都不会啊(还是太菜了) 点分树就是我们点分治构成的新树。满足深度很小。 然后我们就可以在上面瞎维护东西了。 三个大根堆: $C[u]$里装的是点分树中u的子树所有点到点分树中u的父亲的距离。 $B[u]$里装的是点分树中u的所有儿子的C的最大值。 $A$里装的是所有$B$的最大值与次大值之 阅读全文
摘要:
记得是9月月赛题,当时做的时候觉得跟 ZJOI2015幻想乡战略游戏 那道题很像???,就写了,~~然后就写挂了。。。~~ 我们发现假设当前点为根,我们算出$m$次询问中最远的$a$对点,如果这$a$对点,全部都两个点在根的不同子树中。当前点就是最优的就是答案。当全部$a$对点都在一个子树中,我们把 阅读全文
摘要:
一开始想的是莫队,然后维护几个bitset,然后瞎搞。脑子里想了想实现,发现并不好写。 还是主席树好写。我们维护一个权值的线段树,记录每一个权值的最后一次出现的位置下标。我们查询的时候要在前$r$颗线段树中找到第一个出现的位置下标小于$l$的数,在线段树上二分就行了。 这个想法还是非常巧妙的。 cp 阅读全文
摘要:
这题是莫队维护bitset。 然而我并不会bitset~~以前讲过认为不考就没学~~ 我真的太菜了。 首先维护一个权值的bitset——s。 操作3比较简单,我们可以$\sqrt{x}$枚举约数然后判断就行了。 操作1就是求是否存在 $$\exists{a,b},a b=x$$ 移一下项 $$a=x 阅读全文
摘要:
询问的化我们可以建主席树。然后修改?,树套树。。。,最后插入?炸了。 所以我们对操作进行分块。 我们先对整棵树建一个主席树。修改,插入我们先记录下来。然后询问的时候先对主席树查询,然后暴力遍历我们记录下来的修改插入操作。每$\sqrt{m}$次操作后我们重新构建一个主席树。这样我们保证了重建主席树和 阅读全文
摘要:
我们可以维护一个$f[i][j]$代表%$i$意义下得$j$的答案。然后维护就炸了。 先设$x=\sqrt{n}$然后我们发现,当$i x$时我们直接暴力复杂度为$O(x)$,然后我们对$i\leq{x}$的i维护$f[i][j]$,这样询问复杂度$O(1)$,维护复杂度$O(x)$。就可以通过此题 阅读全文
摘要:
这题需要一个黑科技——摩尔投票。这是一个什么东西?一个神奇的方法求一个序列中出现次数大于长度一半的数。 简而言之就是 ; 比如有一个代表投票结果的序列。 $$[1,2,1,1,2,1,1]$$ 我们记录一个$num$和$cnt$先别管它们是干什么的。我们模拟一遍模拟排序。 $$首先读第一个数1,nu 阅读全文
摘要:
可持久化trie树?好像和可持久化权值线段树差不多。。 如果这题没有那个$x[i]$这题就是一个裸的可持久化trie树。 仔细想想,多了这个$x[i]$之后有什么影响? 就是我们查询区间的时候区间的两个端点减去一个$x[i]$就行了。 但是这样我们查询的可能不是树上的一个节点了,我们在树上二分的时候 阅读全文
摘要:
我们把每一次交换看做两个插入两个删除。然后就是一个三维偏序。时间一维,下标一维,权值一维。 cpp include include include include include using namespace std; const int N=100010; struct query{ int t 阅读全文
摘要:
LCT,虚实链剖分。支持连边和断边操作。Tarjan制造。 [HNOI2010]弹飞绵羊 当然这题分块可以做,常数小,但是LCT更无脑。 建立一个虚拟的弹飞节点$n+1$,初始化时对于一个点假如再弹一次就弹飞了,连n+1,否则连弹到的点。维护一个$size$查询就直接split找size就行了。修改 阅读全文
摘要:
(零基础者出门左拐) 最近又双叒学了主席树,打了几道模板题。 ~~感觉还行~~ 主席树,在我看来就是线段树的可持化 ~~(一开始以为主席树只是可持久化权值线段树)~~。在题目中需要建多颗线段树或权值线段树且相邻的线段树差别不大(一般就一个点不一样)时就可以用主席树。运用可持久化的思想,我们并不需要重 阅读全文
摘要:
(零基础者出门左拐) 最近学了学树套树,做了几道模板题。 ~~感觉还行~~ 咳咳咳。 树套树,顾名思义,一个树套一个树。比如树状数组套平衡树,就是把树状数组的每一个结点作为一颗平衡树,线段树套权值线段树,就是一颗线段树,每一个结点都是一颗权值线段树。。。 如果有一个问题是 要求一个区间$[l,r]$ 阅读全文
摘要:
DAY 0 同学们都忙着期中考试,而我即将要踏上NOIP2018的征程。 去机房拿行李。 到机房发现门锁了。完了我的所有东西都在机房! 冷静下来,想起了的备用钥匙,开开了门。~~我都不知道我慌什么~~ 然后跟候神讲了讲昨天NOI.AC的T3。 到了该出发的点了,把门锁好之后把备用钥匙放回去。 因为备 阅读全文
摘要:
题解 以前做过很多单调队列优化DP的题。 这个题有一点不同是对于有的状态可以转移,有的状态不能转移。 然后一堆边界和注意点。导致写起来就很难受。 然后状态也比较难定义。 dp[i][j]代表前i个人涂完前j个位置的最大收益。 然后转移考虑 第i个人可以不刷。dp[i][j]=dp[i-1][j]; 阅读全文
摘要:
题意自己看(猜) 题解 这题很经典,就是记录dp[i][0/1/2]分别代表,从i点向下最大和次大深度,和向上最大深度。 然后转移就行了。 我的写法可能太丑了。死活调不出来,写了一个漂亮的 阅读全文