杂
文章平均质量分 68
chasingdreams02
上海交通大学 软件学院
展开
-
线段树分治
(loj121)给你一张无向图,你要支持如下操作: 1:删除一条边 2:加入一条边 3:查询某两个点对间是否联通 ①在线做法:LCT ②离线做法:线段树分治 口胡做法: 把操作的顺序当做时间。 每条边维护一个存活区间,代表这条边在这个时间区间里面活着。 对时间轴建立一颗线段树,从线段树根开始dfs。 进入一个子树就把它这个子树中完全存活的边的两个点用按秩合并并查集合并。 一直到一个叶子的时候统计答...原创 2019-04-14 12:00:04 · 303 阅读 · 0 评论 -
CDQ分治学习笔记
三维偏序问题: 每个元素有3个属性,a,b,c。 求解对于每个iii,aj<ai且bj<bi且cj<cia_j<a_i且b_j<b_i且c_j<c_iaj<ai且bj<bi且cj<原创 2019-04-14 12:00:18 · 126 阅读 · 0 评论 -
线性基学习笔记
粘链接: https://www.cnblogs.com/ljh2000-jump/p/5869991.html 题: 1:板子题,查询一些数的子集的xor和的最大值。 meet-in-the-middle。插到trie里面。O(2n2∗w)O(2^{\frac{n}{2}}*w)O(22n∗w) 线性基板子 O(nlogn)O(nlogn)O(nlogn) 2:查询一个数是否可以子集被xo...原创 2019-04-14 12:00:32 · 161 阅读 · 0 评论 -
点分治复习笔记
之前的记录: 点分治可以处理一些普通的 tree dp 或者是树剖无法处理的树上路径问题。 简单说就是在一棵树上做分治,考虑对于一个固定根的树,路径只有可能经过根节点,或者完全在它的子树中。后者可以分治递归下去解决。为了保证递归层数是logn 的。我们每次选子树树的重心作为子树的新根。这样节点总数就减少了一半。 我们一般都会考虑无限制的经过根节点的情况(不考虑有一个更深的LCA),减去它完全在它...原创 2019-04-14 12:00:51 · 116 阅读 · 0 评论 -
STL大法好
sort 数组从1开始的整型排序: inline bool cmp(const int a, const int b) { return xx[a] < xx[b]; } sort(a + 1, a + 1 + n, cmp); 结构体排序:(结构体是poi) inline bool cmp(const poi &a, const poi &b) { if (a.x =...原创 2019-04-14 12:03:17 · 260 阅读 · 0 评论 -
一些常用的常数优化
常数,决定了复杂度一样的算法得到分数的高低。 一个101010倍常数?不得了! 常用的常数优化: 1:快读 基础版: inline int read() { int x = 0, f = 1; char ch = getchar(); while (ch &lt; '0' || ch &gt; '9') {if (ch == '-')f = -1; ch = getchar...原创 2019-09-14 16:21:58 · 750 阅读 · 0 评论 -
易错警示
1:位运算的优先级是真的不行。甚至比大于号,小于号,等于号还要低。所以用到位运算,别管程序美不美,直接小括号括起来!!!! 2:long long 类型 和 int 类型比较大小会出锅的。建议转到同一类型比较。 3:对于模数非常大的情况下,快速幂有可能会爆炸long long。(p^2 &amp;amp;amp;amp;amp;gt;1e18)。这里就需要用到O(1)快速乘 typedef long long LL; typedef l...原创 2019-09-14 16:22:25 · 282 阅读 · 0 评论 -
模型(套路)总结
1:序列部分 &amp;amp;lt;1&amp;amp;gt;:一个序列,有些位置确定,有些位置不确定。你要钦定未知位置的数,使得LIS最大。(bzoj5427) solution:考虑普通的LIS,维护f[i]表示长度为i的LIS的最小值。直接维护dp数组,如果位置固定,直接转移。否则考虑任意一个位置都可以补充。f[i] = min(f[i], f[i - 1] + 1); 维护一个delta代表移动了多少位就行。 &amp;amp;lt;...原创 2019-09-14 16:22:37 · 215 阅读 · 0 评论