11 2020 档案

摘要:###链接 发现是三维偏序,用 \(CDQ\) 分治处理出每个数顺序和倒序的满足条件的最长长度与相应的方案数,分别设为 \(f1,f2,g1,g2\)。 设 \(Max=\max\limits_{i=1}^n{f_{i,1}},sum=\sum\limits_{i=1}^n{[f_{i,1}=Max 阅读全文
posted @ 2020-11-24 09:09 (o-ωq)).oO 阅读(101) 评论(0) 推荐(0)
摘要:###链接 贴一下青君大佬的博客~ #include<bits/stdc++.h> #define IL inline #define LL long long #define pb push_back #define pi pair<int,int> #define mk make_pair us 阅读全文
posted @ 2020-11-24 09:00 (o-ωq)).oO 阅读(81) 评论(0) 推荐(0)
摘要:###链接 线段树分治 \(+\) 线性基 \(+\) bitset。 #include<bits/stdc++.h> #define IL inline #define LL long long #define pb push_back #define ls k<<1 #define rs k<< 阅读全文
posted @ 2020-11-24 08:57 (o-ωq)).oO 阅读(117) 评论(0) 推荐(0)
摘要:###链接 有点像 P1972 [SDOI2009]HH的项链? 将区间按 \(r\) 排序,对于在线性基中的每个元素,其在序列中的位置肯定是尽量靠右,所以插入时如果插入值与线性基在某一位上都为 $1$,则比较其在序列中的位置,若插入值靠右则交换,继续插入。 #include<bits/stdc++ 阅读全文
posted @ 2020-11-24 08:54 (o-ωq)).oO 阅读(75) 评论(0) 推荐(0)
摘要:###链接 因为 \(n \leq 10^8\),\(m \leq 10^5\),所以可以用一个域很大的权值线段树动态开点维护。 开始 \(L=1\),\(R=n\),\([L,R]\) 的点值看作 $1$,把一个位置的数提前相当于 \(L-1\) 的位置加 $1$,原来的位置 $1$ 变为 $0$ 阅读全文
posted @ 2020-11-21 19:16 (o-ωq)).oO 阅读(147) 评论(0) 推荐(0)
摘要:###链接 一个很暴力的做法是直接树剖,对除路径上 \(\log n\) 个区间之外的加入决策,很明显要修改的区间也有 \(\log n\) 个,因为要支持删除,所以每个节点要加一个延迟删除的堆来维护,时间复杂度 \(O(n \log^3 n)\)。 发现决策会维持一段区间,可以用线段树分治,于是节 阅读全文
posted @ 2020-11-21 19:07 (o-ωq)).oO 阅读(135) 评论(0) 推荐(0)
摘要:###链接 按 \(b\) 分组 \(dp\),最后合并时: f[i][j]=max(f[i][j],f[i][j-k]+f[i-1][min(w[i-1],k<<1|(m>>i-1&1))]); 表示容量为 \(j \cdot 2^i + (m\) & $2^i-1)$,分 \(j-k\) 个给 阅读全文
posted @ 2020-11-18 19:47 (o-ωq)).oO 阅读(86) 评论(0) 推荐(0)
摘要:###链接 线段树合并,计算 \(sum\) 值时,要记录前缀和与后缀和,维护区间和与区间乘, 合并后的节点如果直接继承之前的节点的话要注意提前将值提取。 #include<bits/stdc++.h> #define IL inline #define LL long long using nam 阅读全文
posted @ 2020-11-18 00:07 (o-ωq)).oO 阅读(122) 评论(0) 推荐(0)
摘要:###链接 类似于权值线段树查询区间 \(k\) 大值。。。(写复杂了。。。 #include<bits/stdc++.h> #define IL inline #define LL unsigned int using namespace std; const int N=5e5+3; int n 阅读全文
posted @ 2020-11-17 20:16 (o-ωq)).oO 阅读(80) 评论(0) 推荐(0)
摘要:###P3899 [湖南集训]谈笑风生 二维数点问题,主席树模板(两种写法 #include<bits/stdc++.h> #define IL inline #define LL long long #define pb push_back using namespace std; const i 阅读全文
posted @ 2020-11-17 15:18 (o-ωq)).oO 阅读(84) 评论(0) 推荐(0)
摘要:###链接 考虑区间的中位数为 \(v\) 应该满足什么条件。 让该区间中小于 \(v\) 的值等于 \(-1\),大于等于 \(v\) 的值等于 $1$,若和大于等于 $0$,则该区间的中位数大于等于 \(v\),否则小于 \(v\)。 (注意数的个数为偶数时,则取偏大的值作为中位数 所以我们可以 阅读全文
posted @ 2020-11-16 21:31 (o-ωq)).oO 阅读(195) 评论(0) 推荐(0)
摘要:###P1270 “访问”美术馆 裸题。 #include<bits/stdc++.h> #define IL inline #define LL long long using namespace std; const int N=2e2+3,M=6e2+3; int n,cnt,kin[N],f 阅读全文
posted @ 2020-11-13 11:44 (o-ωq)).oO 阅读(124) 评论(1) 推荐(1)
摘要:###链接 我好菜啊。。。 考虑每条边对答案的贡献为多少。 显然可以定义状态 \(f_{i,j}\) 表示 \(i\) 子树中有 \(j\) 个黑点,子树中每条边对答案贡献之和的最大值。 于是合并就是背包,方程为 \(f_{u,i+j}=f_{u,i}+f_{v,j}+((k-j)*j+((n-k) 阅读全文
posted @ 2020-11-10 16:14 (o-ωq)).oO 阅读(87) 评论(0) 推荐(0)
摘要:1.93k,70行树状数组套权值线段树代码不来康康嘛~ #include<bits/stdc++.h> #define IL inline using namespace std; const int N=5e4+3,Maxn=1e8+1,inf=2147483647; int n,m,a[N],c 阅读全文
posted @ 2020-11-10 01:03 (o-ωq)).oO 阅读(76) 评论(0) 推荐(0)
摘要:线段树分治是以时间点为下标,将修改以区间形式存储在线段树上,通过可撤销的数据结构进行单点查询(对于某些空间较小,难以实现撤销操作的数据结构如线性基可直接保存副本)。 模板:洛谷P5787 用按秩合并的带权并查集维护连通块中点之间边数的奇偶性来判断是否存在负环(用栈储存撤销操作,复杂度 \(O(nlo 阅读全文
posted @ 2020-11-10 00:53 (o-ωq)).oO 阅读(136) 评论(0) 推荐(0)
摘要:###链接 \(f_{i,j}\) 表示在 \(i\) 子树中,起点终点都为 \(i\) ,时间为 \(j\) 的最大武装值, 同理 \(g_{i,j}\) 表示起点或终点为 \(i\), \(h_{i,j}\) 表示起点终点都在 \(i\) 的子树内。 通过枚举起点终点是否在孩子的子树中,可以得到 阅读全文
posted @ 2020-11-04 16:31 (o-ωq)).oO 阅读(175) 评论(0) 推荐(0)
摘要:###链接 挺套路的题了,因为强制在线所以要建主席树,可以练习一下区间动态开点与标记永久化。 #include<bits/stdc++.h> #define IL inline #define LL long long using namespace std; const int N=6e4+3; 阅读全文
posted @ 2020-11-04 00:27 (o-ωq)).oO 阅读(294) 评论(0) 推荐(0)
摘要:###链接 对于不满足结合律的运算,要处理出两个方向的结果,查询时也要注意方向。 (太菜了。。。被卡常惹。。。 #include<bits/stdc++.h> #define re register #define IL inline #define LL unsigned int using na 阅读全文
posted @ 2020-11-03 19:34 (o-ωq)).oO 阅读(309) 评论(2) 推荐(0)
摘要:###链接 将相同颜色的点按 \(dfs\) 序排序,在树上差分。 因为有颜色和 \(dfs\) 序两个维度,用树状数组套动态开点线段树维护。 #pragma G++ optimize(2) #include<bits/stdc++.h> #define IL inline #define LL l 阅读全文
posted @ 2020-11-03 16:09 (o-ωq)).oO 阅读(214) 评论(0) 推荐(0)
摘要:###链接 十分抽象的一道题(于我而言)。 注意递归的式子中的函数可以被常量替换。 #include<bits/stdc++.h> #define IL inline #define ls k<<1 #define rs k<<1|1 #define LL long long using names 阅读全文
posted @ 2020-11-02 19:24 (o-ωq)).oO 阅读(239) 评论(0) 推荐(0)
摘要:###链接 扫描线 \(+\) 双指针,线段树维护区间最大子段长度,注意更新时对叶子的特判。 #include<bits/stdc++.h> #define IL inline #define ls k<<1 #define rs k<<1|1 #define pb push_back #defin 阅读全文
posted @ 2020-11-02 17:10 (o-ωq)).oO 阅读(252) 评论(0) 推荐(0)
摘要:###链接 \(k\) 很小,建一个线段树,\(O(k^2)\) 合并。 询问时查找区间最小值的位置,合并去掉最小值的左右两段区间。 #include<bits/stdc++.h> #define IL inline #define ls k<<1 #define rs k<<1|1 #define 阅读全文
posted @ 2020-11-02 16:10 (o-ωq)).oO 阅读(202) 评论(0) 推荐(0)
摘要:###树上的数 树上统计类的题目可以尝试往 \(dsu\) \(on\) \(tree\) 方向想。 #include<bits/stdc++.h> #define IL inline #define LL long long #define pb push_back using namespace 阅读全文
posted @ 2020-11-02 14:14 (o-ωq)).oO 阅读(114) 评论(0) 推荐(0)