06 2021 档案
摘要:题意 次询问,每次给一个正整数 ,问最大的整数 满足 ,其中 是正整数。 题解 我想了一个 的根号分治做法,成功被卡常。 这是正解: 有一个奇妙的性质:把 中所有 \(\le x^{0.2
阅读全文
摘要:题解 对于每个点,以深度为下标记录答案。 如果线段树合并想在线,Merge 函数需要这样写: int Merge(int p,int q){ if(!p||!q) return p^q; int res=Newnode(t[p].l,t[p].r,t[p].v+t[q].v); ls(res)=Me
阅读全文
摘要:这场比赛我只打了一个小时,赛时通过 ,排名 (算上 Unofficial)。 A 略。 B 略。 C 显然让每个点的数都取它的边界是最优的,然后 dp 即可。 D 考虑点 的配对,设其与 构成一条线段。 设 为 \
阅读全文
摘要:链接:http://144.202.116.213/contest/4。 A 略。 B 本来想尝试一下数位 dp 的非递归方法,结果写挂了,最后只好写的递归…… 解法显然,略。 C 首先可以发现,我们只要确定了 中的前两个元素,后面的元素也都确定了:设 ,那
阅读全文
摘要:题意 给你一片森林,每次询问某个点与多少个点有相同的 级祖先。 点数、询问数 。 题解 将所有树的根节点连向点 ,使得整个森林变成一棵树。 先离线地求出每个询问点的 级祖先。用栈维护每个点到点 的路径上的所有点,那么其
阅读全文
摘要:题解 考虑对于每个点都开一棵动态开点线段树,以点权为下标、个数为值,记录以这个点为根的子树内的信息。 可以发现交换某个点 的代价可以快速计算:在把左、右儿子的线段树合并上来的时候,对于这两棵线段树上的对应点 ,不交换的代价会增加 \(v_{\mathrm{rson}(p)}
阅读全文
摘要:A 先考虑 怎么做:用 set 维护每个点的前驱和后继,用线段树维护区间内后继编号的最小值以及区间 的和。 对于修改操作,它只会修改三个位置的后继:原数、原来的前驱、新前驱。直接在线段树里单点修改就行了。 对于查询操作,由于 ,所以只能选最长的一段颜色互不相
阅读全文
摘要:A 因为每个点的入度至多为 ,所以原图是一个基环树森林。 对于每棵基环树,每次将它里面的无出度的点删掉,就能得到环上的点。 可以发现环上的那些点可以随意转化,于是缩成一个即可。 再对于所有基环树和普通树的根 ,连边 。这样就能把它变成一棵树。 看到“最小值最大
阅读全文
