- 博客(10)
- 收藏
- 关注
原创 线段树进阶
线段树扩展首先大家需要先学会最普通的线段树,下面开始扩展。1. 线段树维护状态比如说矩阵乘法之类的东西。考虑线段树分治、合并的过程,假如我们存在一个满足结合律的东西(比如说矩阵乘法或一些dp),我们可以使用线段树维护。再比如说区间最大子段和,我们发现这里的状态数满足结合律的。2. 线段树动态开点这东西还是挺常用的。比如说现在有 nnn 棵 mmm 大小的线段树,如果朴素的做的话复杂度起步 O(nm)O(nm)O(nm),无法接受。我们可以只保留有用的点。比如说我们在某一棵线段树上进行了一次
2022-02-14 22:22:08
305
原创 ARC128 A~D
T1:很有意思的题目。发现可能会涉及到高精度。怎么办呢?出题人又没有让你求出具体的答案,只让你求方案,所以你只需要比较两个高精度的大小关系即可。有过类似的题,做法就是取对数,没了。T2:很有意思的题目 too。看到 T≤100,a,b,c≤108T\le 100,a,b,c\le10^8T≤100,a,b,c≤108,感觉有点奇怪。毕竟我有个习惯:看数据范围猜复杂度。结果……这不对呀。算了,不管了。大致思路:枚举一种颜色成为最终的颜色,然后其他两种颜色的差要满足是 333 的倍数,在此基
2021-10-16 22:19:35
213
原创 JZOJ 5457 项链
首先考虑旋转和颜色旋转旋转可以看成置换群,为了方便,给出一下约定(a1a2a3...an123...n)=(a1,a2...an)\begin{pmatrix} a_1&a_2&a_3&...&a_n\\1&2&3&...&n\end{pmatrix}=(a_1,a_2...a_n)(a11a22a33......ann)=(a1,a2...an)那么旋转可以这么搞,比如向右旋转一位就是(2,3...n,1)(2,
2021-02-27 16:57:21
171
原创 树上差分
其实这东西看起来并不难。举个例子:给你一颗树,有 N 个节点,初始权值均为 0 ,现在有 M 个操作,每个操作是将点 x 到点 y 路径上的所有点权值加一,最后求每个点的权值。感觉地球人都知道怎么做。显然,这么搞就行了。当然,你也可以在LCA那里减去 2 ,最后特判一下即可。那么,就这样了,End ?你以为真的就这点吗?例题:[NOIP2016]天天爱跑步。这也能用树上差分!?行吧,还需要点小东西帮忙:桶。我们先考虑把这一条链拆成上行和下行两部分,先考虑上行,也就是 x →LCA 。
2021-01-22 18:50:05
109
原创 浅谈网络最大流
网络最大流是一种比较常见的高级知识点吧。别的概念我就先不解释了,直接简单的说一下大概是什么。其实可以这么说:已知一个图,每一条边都有一个流量限制,换句话讲就是最多只能有那么多的流量经过,请问从源点开始最多能有多少单位流量流到汇点(其实就是指定点)。就比如说下图最大流是3。...
2020-08-14 20:10:47
661
1
原创 关于C++的各种卡常技巧
卡常在OI之路中,我们做题目时经常预计时间能过得去,但是却会被卡掉,那是因为我们程序的常数太大,所以今天来教一教大家如何减小常数,达到卡常的效果。读入优化这个相信大家都很熟悉。char c;int s;int fastread(){ s=c=0; while(c<'0'||c>'9') c=getchar(); while(c>='0'&&c<='9') { s=s*10+c-'0'; c=getchar(); } return s;
2020-08-12 21:57:08
6427
1
原创 JZOJ 1495. 宝石(附加扫描线讲解)
JZOJ 1495. 宝石题目大意:给你N个(K+1)×(K+1)(K+1)\times(K+1)(K+1)×(K+1)的正方形以及他们左上角的那个顶点的坐标和它的权值,求最大的覆盖的权值。这一题可以用二维前缀和做,但是无法拿到满分。满分做法:扫描线。假如现在有这么两个长方形,权值都为1(不要问为什么是长方形,这里只是为了方便讲解而已),它们摆放如图:首先,我们把所有竖着的线给找出来。然后,我们就可以分别算出下面三个区域的最大覆盖权值了。我们可以把所有的线按横坐标小到大排序,将这个几何图
2020-08-11 21:58:39
109
原创 自然数幂和(拉格朗日差值法)
自然数幂和给你一个KKK,现在有QQQ组询问,每一组询问给出一个NNN,求:∑i=1nik\sum_{i=1}^ni^ki=1∑nik由于答案太大,所以要对109+710^9+7109+7取模。其中:K≤100,Q≤105,1≤N≤109K\leq100,Q\leq10^5,1\leq N\leq10^9K≤100,Q≤105,1≤N≤109看到题目的第一眼:好水呀,我用O(NQlogK)O(NQ\log K)O(NQlogK)就能过了恭喜你,程序大概运行81天就可以运行完了……(记得开O
2020-08-11 20:57:21
346
原创 主席树略讲
主席树首先必须会线段树并且会动态开点才能看该博客。众所周知,线段树长这样主席树,又称可持久化线段树,因为它支持历史查询,就像这样:现在有一个序列,原始版本:[1,2,3,4]1:将原始版本2号点增加3,成为1号版本:[1,5,3,4]2:查询1号版本区间1~3的和:93:将1号版本3号点增加3,成为2号版本:[1,5,6,4]4:查询原始版本区间1~5的和:105:将1号版本4号点减少1,成为3号版本:[1,5,3,3]…而这些,我们都可以用主席树维护。由于每一次只会改变一个点,所
2020-08-11 19:46:08
116
原创 JZOJ 4319. Lucas的数列
JZOJ 4319. Lucas的数列看到这道题,因为需要支持区间查询,所以……算法一:暴力具体过程不细讲。期望得分:30分。算法二:莫队(不会的跳过吧)针对题目给的公式:p=∑i=1mximp=\frac{\sum_{i=1}^mx_i}{m}p=m∑i=1mxi和s=[∑i=1m(xi−p)2]×ms=[\sum_{i=1}^m(x_i-p)^2]\times ms=[i=1∑m(xi−p)2]×m我们可以将其展开,得到:s=[∑i=1mxi2−2∑i=1mxi×p+m×
2020-08-05 19:46:31
319
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人