首页 > TAG信息列表 > rt2
LG 题解 CF379F New Year Tree
目录前置知识SolutionCode 题目传送 不明白这题为啥能评黑,也就蓝的水平?(估计很快就掉了吧) 前置知识 倍增求LCA 树的直径 找性质 Solution 新增加的两个点其实是一个样的(深度相同,祖先相同) 考虑新增的一个点 \(x\) 对答案的贡献。 设先前树上直径的两端点为 \(rt1, rt2\)。 想一下,P5494.【模板】线段树分裂
【模板】线段树分裂 给出一个可重集a(编号为1),它支持以下操作: 0 p x y:将可重集p中大于等于x且小于等于y的值放入一个新的可重集中(新可重集编号为从2开始的正整数,是上一次产生的新可重集的编号+1) 1 p t:将可重集t中的数放入可重集p中,且清空可重集t(数据保证在此后的操作中不会出现可重Balanced Lineup (自用线段树模板一)
include <string.h> include <stdio.h> include using namespace std; define ll long long const int maxx=1e5; ll n,t,q,tree1[2maxx],tree2[2maxx],a[maxx]; void pushup(ll rt) { tree1[rt]=max(tree1[rt2],tree1[rt2+1]); tree2[rt]=min(tree2[rt2],tree2[双01字典树最小XOR(three arrays)--2019 Multi-University Training Contest 5(hdu杭电多校第5场)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6625 题意: 给你两串数 a串,b串,让你一一配对XOR使得新的 C 串字典序最小。 思路: 首先这边有两个问题: 1. 我要怎么知道这两个数配对是最优的:一开始我也不明白(以为选择会有后效性),其实很简单,对 a 里的一个X,在 b 的01树里跑到的最优HDU 6625 three arrays 求两个序列异或最小值的排列(一个可以推广的正解
目录 题意: 解析 原题描述 @(hdu 6625求两个序列异或最小值的排列) 题意: \(T(100)\)组,每组两个长度为\(n(100000)\)的排列,你可以将\(a[]\)和\(b[]\)随机排列,可以得到\(c[i]=a[i]\)^\(b[i]\),求字典序最小的\(c[]\)。 解析 一个显然对的贪心做法: 针对本题 每次两颗字典树同时Philosopher(set 线段树合并)
直接维护乘积是肯定不可行的, 精度会爆炸, 于是我们来维护对数的和, 最后来计算最高位即可 那么转换成区间求和, 区间排序 区间排序的方式可以采用线段树维护最大递增块来解决,外层用set来维护线段树的区间, 然后利用线段树的合并分裂性质来操作即可 #include<cstdio> #include<algorit