12 2023 档案
摘要:线段树合并被卡常了。 这个题的题意有些瑕疵,即 ddd 的范围。如果 ddd 大于等于 uuu 子树最大距离,那我可以任意取 ddd,这个集合岂不是无穷大了? 实际上是,输入的时候存在 ddd 大于等于这个最大距离,但我们求的 d′d'd′ 的取值必须小于等于子树最大距离。 接着考虑做法: 显然我们
阅读全文
摘要:121212 秒,范围 10610^6106,猜测可能是根号算法。 考虑根号分治。设阈值为 BBB,对于修改操作,如果涉及修改的点数 ≤B\leq B≤B,直接暴力修改并维护 sumysum_ysumy 表示 yi=yy_i=yyi=y 的点在暴力操作下的点权和。否则打标记,维护这种 xxx 平
阅读全文
摘要:先考虑暴力 O(nm)O(nm)O(nm) 怎么做。 我们肯定是把区间中某一个数全部删掉。维护 fif_ifi 和 gig_igi 分别表示 iii 前面第一个和 aia_iai 相等的位置和后面第一个。不存在时,fi=0,gi=n+1f_i=0,g_i=n+1fi=0,gi=n+1。 考
阅读全文
摘要:很容易想到离线扫描线。 考虑离线从 111 到 nnn 扫描 rrr,同时开一棵线段树,线段树每个位置都是 000 或 111,第 iii 个位置表示 [i,r][i,r][i,r] 中出现过的数的个数奇偶性。对于 i>ri>ri>r,默认这个点为 000。则每个询问都是扫描到对应的 rrr 时刻,
阅读全文
摘要:经典套路是一个数一直求 gcd\gcdgcd,在 O(logV)O(\log V)O(logV) 的变化次数内会变成 111。注意变化次数不是操作次数,也就是说这个数在操作过程中不同取值只有 O(logV)O(\log V)O(logV)。 考虑一个集合 S={s1,s2,⋯ ,sn}S=\{
阅读全文
摘要:对于这个网格图四联通建边,然后建圆方树。 很显然一个图中删掉一个点增加的连通块数量为圆方树上这个点的度数 −1-1−1。 于是直接就做完了。每个点累加答案,求个平均数就好了。 #include <bits/stdc++.h> using namespace std; #define int long
阅读全文
摘要:考虑把题目中的边设为有向边,i→pii \rightarrow p_ii→pi。考虑每个连通块。 显然每个连通块是一个 xxx 个点 xxx 条边的图,且至多只有一个自环。于是这必然是一棵树,或者内向基环树。 首先确定最终树的根。如果存在任意一个 pi=ip_i=ipi=i,那么根就可以确定为
阅读全文
摘要:题意:给定 n,kn,kn,k。定义一个数是美好的当且仅当这个数的十进制无前导零表示下数位上不同数个数 ≤k\leq k≤k,求 ≥n\geq n≥n 的最小的美好的数。多测。1≤n≤109,1≤k≤101 \leq n \leq 10^9, 1 \leq k \leq 101≤n≤109,1≤k≤
阅读全文
摘要:题意:给 nnn 个点的树和 kkk,边无权。问有多少种方案,选出 kkk 个点且 kkk 个点中两两距离相等。对 109+710^9+7109+7 取模。2≤k≤n≤1002 \leq k \leq n \leq 1002≤k≤n≤100,多测。 特判 k=2k=2k=2 时,输出 (n2)\db
阅读全文
摘要:考虑树上背包。但是直接设 fi,jf_{i,j}fi,j 表示以 iii 为根的子树中用了 jjj 次魔法难以转移,问题在于难以确定 iii 的儿子是否呗魔法标记。 于是加一维,fi,j,0/1f_{i,j,0/1}fi,j,0/1 表示以 iii 为根的子树中用了 jjj 次魔法,iii 点被
阅读全文
摘要:考虑离线猫树分治。分治函数 solve(l,r) 表示将所有询问区间 [x1,x2][x_1, x_2][x1,x2] 完全包含于这个区间的询问区间答案处理出来。 考虑在 midmidmid 两侧的递归处理,现在要考虑的是 x1∈[l,mid],x2∈(mid,r]x_1 \in [l,mid]
阅读全文