随笔分类 - 题解
摘要:函数复合,直接转化为离线问题,那我们就需要完成对满足条件的量的区间加操作。 显然 \(ans_{[l,r]}\ge ans_{(l,r]}\),所以可以线段树二分。 时间复杂度 \(O(q\log n)\)。 #include<bits/stdc++.h> using namespace std; 
        阅读全文
                
摘要:考虑到正向求解困难,于是正难则反。 那么实际上对于 \(a_i\) 和 \(a_{i+1}\) 来说,它们给答案的贡献就是满足 \(l_j>a_i,r_j<a_{i+1}\) 的区间数量。 那么就是经典转化了。直接转换为二维数点问题即可。时间复杂度 \(O(tn\log V)\),离散化可以将 \(
        阅读全文
                
摘要:相当套路而巧妙的构造。 假如我们对于横纵坐标构造二分图,然后用如下方法连边: 对于点 \((x,y)\),连接 \(x,y\)。 那么对于一个有 \(num_x\) 个横坐标点和 \(num_y\) 个纵坐标点的连通块,它所产生的贡献就是 \(num_x\times num_y\)。 这玩意儿需要联
        阅读全文
                
摘要:\(xor\) 最大值想到线性基,路径想到 \(lca\) 和树链剖分,由于没有修改用 \(lca\) 就可以。先用处理 \(fa\) 数组的方式处理倍增线性基(自然是得用线性基合并的),在求 \(lca\) 时把所有线性基全部合到一块儿就行。 考虑到本题实际上核心在于让路径上的线性基数量 \(\l
        阅读全文
                
摘要:考虑不联通的情况。图不好做,就造一棵生成树出来,由于是无向图,所以只有树边和返祖边。 发现在一条树边断开后,生成树会分成两个连通块,由覆盖这条树边的返祖边链接,只有这些返祖边也全部断开,原图才会不联通。 想到异或的优良性质。我们给所有返祖边在 \([0,2^{63})\) 中随机一个值作为这条边的权
        阅读全文
                
摘要:不得不说这题的确挺苟的。 注:下述“引理”表示: 对于长度为 \(n\) 的数组 \(V\),其线性基为 \(B\),定义 \(c_v=\bigoplus\limits_{a\in v}a\),\(num_k=\sum\limits_{v\subseteq V}[c_v=k]\),则 \(\fora
        阅读全文
                
摘要:因为要求本质不同的图,容易想到群论。 为了方便处理,将边是否存在转化为边的黑白染色问题(实际上就是 \([SHOI2006]\) 有色图 的弱化版本,最终公式也差不多)。 根据 \(Burnside\) 引理和 \(Polya\) 定理,将问题转化为:对于每种置换方案,有多少个边的等价类。 考虑对于
        阅读全文
                
摘要:模版题的升级了。 使用二分图经典判定方法(一个点拆成两个点 \(x,x+n\),连边 \((x,y)\) 就是连接 \((x,y+n),(x+n,y)\),那么是否是二分图就等价于判断 \(x,x+n\) 是否都不在一个集合内),预处理出每个操作的 \(e_i\) 下一次出现的位置 \(nx_i\)
        阅读全文
                
摘要:注意力惊人的注意到我们可以将问题转化为所有联通块大小全部为偶数。 假如已经确认了所有加入的边,那么我们可以通过类似 \(K\) 算法的方式求解。 考虑到答案单调不升,所以每条边都有一个影响的区间。考虑线段树分治。 我们倒序枚举,遇到要加入的边,若当前时间为 \(t\),边的加入时间为 \(t'\),
        阅读全文
                
摘要:\(NOIP\) 考前祈福。 实际上,每种伤害 \(d\) 打出的亵渎次数可以转化为: \[1+\max\limits_{i=0}^{\lceil\frac{n}{d}\rceil}(i[\sum\limits_{j=1}^{i}[sum(jd-d+1,jd)>0]=i]) \]其中 \(sum(i
        阅读全文
                
摘要:100+50+65+45=260,rk3。 T1 【模板】分治FFT 题目名称很吓人,但是主要要找到关键性质。 考虑 \(c(a+b)+ab=b(a+c)+ac=a(b+c)+bc=ab+ac+bc\),相当于说合并方式对答案贡献无关。每种合并方式对答案贡献很好求,合并方式数量可以理解为每次从剩下的
        阅读全文
                
摘要:100+0+50+0,rk10。 T1 简单树形 \(dp\) 带国王游戏经典贪心,时间复杂度 \(O(n\log n)\)。 #include<bits/stdc++.h> #define int long long using namespace std; const int N=5e5+5; 
        阅读全文
                
摘要:CF1763C 容易发现当 \(n\ge 4\) 时可以将左右两端变成 \(0\),随后用最大值覆盖全部,问题转化为 \(n=2\) 和 \(n=3\) 时的答案。 当 \(n=2\) 时,要么进行一次操作,要么不操作,\(ans=\max(a_1+a_2,2|a_1-a_2|)\)。 当 \(n=
        阅读全文
                
摘要:100+10+10+100,rk2。 T1 图 简单题,\(bitset\) 即可。时间复杂度 \(O(\frac{n^2m}{\omega})\)。 #include<bits/stdc++.h> #define int long long using namespace std; const i
        阅读全文
                
摘要:好题好题,太棒了这题! 直接想是十分困难的,你连 \(dp\) 状态都想不出合理的,因此考虑二分答案,转化成一个判定问题。下文 \(d\) 表示二分出的答案。 设 \(sum_i\) 表示 \(i\) 子树内的合法路径数,那他就一共分为两部分: 来自于 \(sum_{son}\),直接累加即可。 经
        阅读全文
                
摘要:考虑 \(i\) 排在 \(j\) 前的条件是 \(a_i+\max(a_j,b_i)+b_j\le a_j+\max(a_i,b_j)+b_i\),然后发现这一坨东西是皇后游戏中的倒数第三个式子,直接转化为 \(\min(a_j,b_i)\ge\min(a_i,b_j)\),然后就按皇后游戏中的排
        阅读全文
                
摘要:最小值最大,考虑二分答案,问题转为判断最小值是否能 \(\ge x\)。 假如 \(a_i\ge x\),那我们肯定不管;假如 \(a_i<x\),那最好能让选择的区间 \(r\) 值更大,用优先队列维护即可。区间增幅可以用树状数组维护。 时间复杂度 \(O(n\log^2n)\)。 #includ
        阅读全文
                
摘要:那她既然都说到老国王了,那肯定就是贪心了。 先声明两个引理: 引理1:若 \(\max(c,a)<\max(c,b)\) 时,定有 \(a<b\)。 引理2:\(\max(a,b)-a-b=-\min(a,b)\)。 证明就不说了,非常好证。 考虑 \(i,j\) 两大臣孰先孰后,假如 \(i\) 
        阅读全文
                
摘要:好题好题。 难点在建图,因为图的边数将会决定最小生成树的时间复杂度。我们肯定希望能够只建 \(O(n)\) 级别的边,这样时间复杂度就可以做到 \(O(n\log n)\)。 观察到当 \(i,j,k\) 三个区间能够互相连边时(这里假设 \(a_i<a_j<a_k\)),我们绝对不会连 \((i,
        阅读全文
                
摘要:CSP 前学习珂学,祝自己 \(while(1)\ rp++\)。 考虑求解出每种数对答案的贡献。 设 \(t=r-l+1,k_x=\sum\limits_{i=l}^r [a_i=x]\),由容斥得贡献为 \(x(2^t-2^{t-k_x})\)。 求解 \(k_x\),考虑莫队,时间复杂度为 \
        阅读全文
                

浙公网安备 33010602011771号