- 博客(65)
- 收藏
- 关注
原创 NOI Online 2022
什么屑逼比赛,我真的是干尼玛的;T1题意很明了。考虑应该转化成我们可以做的一种方式;50分可以树状数组维护区间序列;100分可以主席树;我笑死了,这种阴间查询题目一般都会搞出一个可以参考的数据,然后再用已知模型来查询的吧;T2我吐了,辛苦两小时打出来的3K代码居然不如别人40行满分代码;这题是贪心。我们按 k 从小到大排序,那么长度大的和长度小的如果有公共元素的话,长度小的一定是长度大的子集。这样的话,我们对每个值记录找到的最晚的那个人(贪心),然后暴力判断。那么对于和集合相关题目
2022-03-29 20:26:49
205
原创 决策单调性&斜率&单调队列优化DP
毒瘤DP,DP里面最难写的。P1912最经典题目了属于是。其实就是一个决策单调性板子题,因为年代久远所以比较难码出来。关键就是找准最优子结构,我觉得这种都可以划一个模型,数列优化模型,都这么搞;...
2022-02-13 15:31:38
361
1
原创 MANANCHER
因为这个比较冷,所以就做4道题好了;P2487manancher做的时候特判一下就好了QAQ;不需要自己去想别的傻逼做法;P4555这题真的有点寄吧水,跑一遍manancher,然后对于每个点记录所有l在这个点的长度的最大值,然后每次枚举的时候把后面最大值加一遍就好了,O(n)O(n)O(n);...
2022-02-12 10:30:23
264
原创 数据结构优化DP
P2605这题真的好难呀,连最基本的DP方式都没有想出来;看题解了之后才做出来;这里没有内容可以多说了,看洛谷吧;BZOJ3688终于有一道水题了;TWT太水了,以至于他完全符合模型,就是这样吧;...
2022-02-11 13:56:55
649
原创 期望概率DP
BZOJ2201题面很难找,找了半天才找到一张图。题目很别致,我们发现,期望DP的题目一般来说都要根据题目所给的东西来定制一种做法?本题中,那个贡献值的定义是连乘出来的,那么。。。。。如果说要计算贡献,那么就只能用乘法分配率。对于已经确定下来的一段,我们用一个状态代表一个集合,因为m的值实在是太大了,不可能设计出一种状态;也就是说这个集合大约是这样的 {aaaavbdsaddasdsadasddasdsadsaddasdsaddsd}结尾有着相同的段子,这样子就可以了;然后链状的这题
2022-02-10 16:17:46
233
原创 计算 几何
y总的课确实非常细致体贴,整理了一些基础知识,非常重要的还是;常数和公式pie = acos(-1) // πc*c = a*a + b*b - 2*a*b*cos(C); // 余弦定理比较函数const double eps = 1e-8;int sign(double x) { if(fabs(x) < eps) return 0; if(x < 0) return -1; return 1;}int cmp(double x,double y) { if(fa
2022-01-27 21:21:42
658
原创 SIMULATE ANNEAL
模拟退火想不出来别的做法的时候,亦或是函数特征比较明显的时候,具体一点,就是很明显的能看出来他是个函数,且在规定范围内有极值的时候可以使用模拟退火。AcWing3167费马点是吧,直接随机化把你草出屎来;#include<iostream>#include<cstdio>#include<algorithm>#include<cmath>#include<ctime>#define x first#define y second
2022-01-26 15:04:54
643
原创 静态仙人掌
仙人掌,一个一听就很屌的东西,其实真正做了做之后,发现也没有想象的那么难过天际,无非就是多个算法拼凑在一起罢了;Acwing2866嗦点,lca,做完了,主要是代码不好写,真正把代码写出来之后发现也还可以,代码没有想象的那么难;#include<iostream>#include<cstdio>#include<algorithm>using namespace std;const int N = 12010, M = N * 3;int n ,m , Q
2022-01-26 13:40:47
676
原创 动态点分治
动态点分治,带修的。显然,如果说单纯使用点分治的做法是会超时的,那么我们只要考虑一下继承就好了,别的好像就没什么了。分析一下整过过程,我们只是改了仅仅一个点,就需要对全局进行重新统计,显然不好,那么修改过得那个点,它的影响范围就是从那个点一直跑上去的一路上的重心,做到这里其实就方便很多了...
2022-01-26 08:28:49
132
原创 CDQ分治
所谓CDQ分治,经常用来解决三维偏序问题;三维偏序题目初始形式,我们发现里面东西给出来的顺序是没有实际意义的;那么让a来充当这一维顶替无效信息;然后对剩下两个维度进行处理;对于二维偏序问题,我们使用那个啥树状数组,先给一维排好序,另一维使用树状数组,但是对于三维偏序问题,我们的bc维度是混乱的,那么考虑先排序,因为a已经定好了不能乱动,而我们又要搞bc,那么考虑先分段,即先定下a的大致大小,再对b精确排序,再用树状数组统计c,然后就出来了;#include<iostream>#inc
2022-01-04 21:11:26
195
原创 左 偏 树
用来维护堆的集合;为什么不能直接暴力,因为这样子会退化成是一条链,然后就报废了;那么如果我们要及时完成合并,就需要平衡;两种方法,第一种是随机数,第二种是通过一些奇怪的方法维护平衡的性质;、左偏树,因为他总是能保证树的一边,也就是右边是平衡的;这要得益于他设计出来的dist性质以及,左偏性质的结合,使得链只有可能出现在右边,然后我们就方便干事情了;合并的时候维护左偏性质就可以了;#include<iostream>#include<cstdio>using names
2021-12-30 21:10:04
493
原创 SPLAY
P3391文艺平衡树,反转区间;splay能够翻转区间,是因为他贼能转,转出一个子树的中序遍历就代表一个区间。首先我们把区间给转上来,就是转上那两个 l−1l - 1l−1 和 r+1r + 1r+1 两个端点,然后中间形成的子树就是那个区间了,但是不能去转别的端点,如 lll rrr , 因为这样子的话你不能确定一个子树出来代表一个区间;然后就是翻转,翻转的话,我们发现只要将每个节点的儿子翻转一下就可以了,但是我们不给出证明了,因为比较简单,但是如果你都翻转的话复杂度会假掉,以及转了两次等于没有
2021-12-25 21:15:19
555
原创 平常の刷题9
HHHOJ781这题很简单,唯一值得讲的内容就是时间复杂度证明;题目中要求我们求按位或;那么考虑按位或,我们操作之后所得到的数,只会变得更大而不会更小,也就是说,1的位置只会变多而不会变少;那么如果1的位置的数量没有增加,那不就找到了嘛,如果增加了,他最多增加64遍,肯定要没;所以证毕;为什么说能想到鸽巢原理,他很符合那个模型,很多东西填那么几个格子里面的模型;HHHOJ754狗逼题目;不含信息理论的解法;考虑一下结果的性质;我们发现 aaa 只能拿来 ∗*∗ ,bbb 只能拿来 +++,所
2021-11-19 09:40:54
221
原创 平常の刷题8
CF1603A这个题目1300,非常简单,但是又不那么简单,这道题真的是用数学归纳法来证明结论的,证明方法其实非常的简单;注意,我们可以把ai从1到i的位置擦掉,所以对于每个i,应该至少有一个从2到i+1的整数使ai不能被那个整数整除。如果对某个整数i不满足,那么就肯定没有解。否则,解总是存在的。为什么?我们可以用归纳法证明它。假设有可能删除包含n - 1个元素的前缀。作为一个可以抹去在某个位置从1到n(假设k),然后擦除n−1元素的前缀,当前缀包含k−1元素,然后一个k的位置,所以我们可以在这个
2021-11-16 19:58:14
180
原创 平常の刷题7
以后做题不写博客我就吃奥利给;CF1537F这题2200分是吧,很有意思比别的平台上的一些蓝提有难度多了;首先这个题目向我们揭示了图的一个很重要的性质,一张图要么是二分图,要么不是二分图,一张图里面要么有鸡环要么没有鸡环,所以根据这点我们就可以去构造了;然后我们分别考虑一下这张图中的鸡环和偶环;然后我们就发现了这样一个神奇的性质,然后我们在再去搞一下,分类讨论一下;1 只有鸡环的图,我们可以乱杀;2 只有偶环的图,他显然是一幅二分图,二分图我们搞一下发现如下的性质:对于一张二分图可以有两种
2021-11-04 20:26:05
188
原创 【运算】超长小学生计算题
超长小学生计算题给你一个序列,序列长2e6,接下来给出你2e7个运算操作,包括加减乘除四种操作,其中,加减操作是单点修改,除法操作是全局修改,对于除法操作我们保证不会产生分数,也就是说这个过程中一定是整数,然后,请你输出一下,这些运算操作结束之后的序列;题解很简单,一次方时间复杂度,倒序遍历,然后就可以乱搞了,因为关于加法和减法,对于后面产生的影响我们都是可以直接搞出来的,也就是说,如果一个操作会有后效性且后效性需要维护,我们可以采用倒序的方法来做;...
2021-10-27 21:18:26
382
原创 反 思 1
发现自己火候还是不够,很正常,很能理解自己,客观原因确实是出于练习时间不够,主观原因是觉得自己临场也可以打,结果发现没有规划的正式比赛还是风险太大了;无;
2021-10-24 14:14:18
82
原创 【字符串】周期函数
周期函数JOKER这个伞兵数学课上三角函数的时候睡觉了,根本没有听到周期函数这么重要的内容,于是他考试炸了,现在他想请你帮他订正一下有关周期函数的题目;第一行输入一个n,表示已知的函数值的数量,每两个函数值的自变量的间隔都是1个单位长度,已知这个函数一定是周期函数,最小正周期T一定是n的某一个因数,现在请你求出这个最小正周期T;样例输入:481 1 1 1 1 1 1 1 4 5 1 4 1 1 1 1 1 1 1 1 4 5 1 4 1 1 1 1 1 1 1 1 4 5 1 4 1 1 1 1
2021-10-02 16:21:44
100
原创 【数据结构】蓝警:合众国之辉
《命令与征服:蓝色警戒》(Command & Conquer:Blue Alert)是Eastwood及EA开发,苏联艺电游戏公司发行的一款即时战略(RTS)单机游戏。其续作有《命令与征服:蓝色警戒2》及《命令与征服:蓝色警戒3》。在游戏中,玩家需要通过操纵各式游戏单位,以摧毁对方阵地为目标,来争取胜利;游戏中,美军在沙特的一个小岛上修建了一个基地,基地里面有各种各样的管道和和石油开采井,每条管道都是东西分布,而且都是从距离基地东边缘l米处一直延伸到距离东边缘r米处,包括两个端点;每个开采井位于
2021-09-21 14:03:13
147
原创 维护区间加k阶多项式序列
第一种是很朴素的想法,但是绝对超时还不如暴力,就是牛莱公式积分积一下然后tag变为那个二阶等差的关键参数,但是关键参数只能记录常数个,因此这个方法每次都要pushdown所以叉掉了;然后第二种是二阶差分,如果我们加上0次的序列那么直接一阶差分单点修改,如果加上一次序列直接二阶差分单点修改,加上二次的序列直接三阶差分单点修改,其实也可以二阶差分区间修改反正都是log,无非是你吃饱了撑不撑的问题,因此我们得出结论n阶多项式序列直接采用n阶差分区间修改或者是n+1阶差分单点修改,求一次前缀和差分降一阶;手造数
2021-09-19 20:50:35
221
原创 暑假の刷题6
这题是记忆化搜索,其实记忆不记忆的我也写不来,想到可以用dp,然后想了个转移方程然后就出来了,其实这题的dp还是比较难想的,难就难在最优子结构的性质如何去体现出来,然后想了好多种方法,有区间的,有...
2021-08-26 21:31:27
66
原创 再谈扫描线
其实两个多月之前写过一篇,但是那时候的水平怎么能和现在相比,恰好前几天鸽了一道扫描线的题,所以今天来补上;POJ2482POJ1151前面一个是数星星,后面一个是亚特兰蒂斯,两题其实都是属于扫描线的一个模板题啊,数星星那个属于是找最大值的版本,亚特兰蒂斯那个属于是找和的版本;扫描线其实就是一个平面上有一些线,无非你要求出关于这些线的一个信息罢了。你先定下一个坐标表示你当前的一个线段树的一个含义,然后把另一个维度当成是时间轴,你就根据另一个维度去操作就好了;首先如果说那些点的横纵坐标的值域都是不需
2021-08-10 15:13:17
114
1
原创 暑假の刷题3
上一篇文章超字数了属于是;所以这篇八千字发表了;POJ2411蒙德里安的梦想,状压DP经典题目了属于是;很恶心这道傻逼题目;状态设计:f[i][j]表示在i行状态是j的方案数 ;状态J是什么样的呢,就是说J里面是一的位置就代表那个位置又一个横着的向下一行伸出去的块;状态转移:我们每次枚举到一行,就枚举一下他的前面一行;然后进行一个判断是吧;判断的时候要满足这么几个条件:1.J & K == 0;2.其实可以预处理一下所有的状态,怎么个预处理法,就是每个状态来说进行逐位的判断,
2021-08-10 13:47:45
99
1
原创 暑假の刷题4
POJ3368想想单调性这个条件可以怎么用,为什么说线段树不能做区间众数的题目,因为你怕的就是说这个里面出现最多的在另外一个里面一次都没有出现过是吧,但是单调性就能帮助你规避掉你的恐惧;分成三种类型;一个st表里面,一个存的是两端点都在里面的最大出现次数,一个是左端点的颜色,另一个是右端点的颜色;(说颜色是因为以前题目顺口了,凑合着看吧)我们截取st婊最核心的部分分析一下具体要怎样做;void init(){ for (int j = 0; j < M; j ++ )
2021-08-09 17:52:09
102
1
原创 暑假の刷题5 初赛篇
今天肾虚不想做题刷刷初赛;NOIP2015PJ操作系统的作用是( )。A. 把源程序译成目标程序B. 便于进行数据管理C. 控制和管理系统资源D. 实现硬件之间的连接正确答案: C一是方便性,一个未配置操作系统的计算机是极难使用的。二是有效性,CPU的高速和外部设备的相对低速是计算机硬件无法逾越的基本矛盾,如果没有操作系统的管理,CPU和外部设备就会经常处于空闲状态。三是提供应用软件的运行环境,操作系统位于应用软件和硬件之间,应用软件不能脱离操作系统而独立运行。操作系统的是负责管理计
2021-08-09 10:48:13
492
原创 暑假の刷题2
POJ1942这题还挺有意思哈,开始就直接想DP,一看内存30MB??????过于狗屎了属于是,于是直接组合数,因为你走到一个点,所需要的走的横向的步数和纵向的步数是确定下来的,所以说可以直接整活了属于是 ,循环一下求阶乘,乘乘除除出答案;POJ292这个题目选的同余系是惩罚封闭的,诶,舒服,筛一遍质数,然后分别枚举两个质数给那些semi质数打上一个tag然后就完事了;POJ1845挺好一道题,只不过做的时候脑子抽了,公式忘了,自己退了遍有个地方还推错了就尼玛离谱是吧;其实就是套一下公式解一下
2021-08-05 14:35:10
130
1
原创 暑假の刷题1
7.23开始看字数分文章吧10000字一篇不然太难找了了;P5021 NOIP2018这道题刚看见的时候读不懂这题是啥意思,多读了几遍才知道,然后想了想骗分只能骗到55而且也挺好写的,后来就不知道怎么做了,50的范围我都想不出什么狗屁方法,想了一个小时之后,然后去看题解了,发现这题其实很简单,只是我刷题太少人比较笨想不出来;二分答案基本上是可以肯定了的,好像最大值最小和最小值最大基本没有逃出过二分的范围,之前还怀疑会不会二分只是一种解答而已,题目中给了个限制叫做选的赛道的条数,这个条件很重要就是拿来
2021-08-01 11:22:50
147
原创 点 分 治
POJ 1741做到这题就像怎么做,想了半个小时网上搜下思路,发现是点分治板子题了属于是;点分治,是在一棵树上的处理方法,处理什么问题我也不知道,主要步骤如下:1.找重心;2.统计合法方案;3.递归找接下来的方案;方案分成三类:1.穿过重心的;2.圈地自萌的;3.停在重心的,需要去特判一下;不同的点分治题目其区别在于统计的时候方法不同;AcWing 252就是板子题,直接上代码看下了;首先这份代码看起来十分舒服,因为好几块内容分装了,函数拆的很好;#include<iost
2021-07-30 14:26:31
116
2
原创 尺取法解决一类问题
尺取法,有些可能叫双指针算法,很好的一种算法属于是;要讲的这类问题是给定一个单调序列,求出里面有几对无序二元组是满足大于等于K或者说小于等于K或者说等于K的;暴力平方过,二分log过,尺取法线性;就是说,两个指针一个i一个j,两个同时向中间逼近,每次累加一下贡献;我们设i为主指针,就是用for来控制的,设j为次指针,就是用while来控制的,首先第一种情况就是小于k的情况;i要从大到小的for,j从最小的开始每次慢慢变大,重合之后只要保证比i小就好了;大于k;i要从小到大来for,别的相反就这
2021-07-30 12:45:09
112
1
原创 树上差分 与 树链剖分
树上差分就是说;其实树上的问题真的和线性的问题是很像的只不过是迭代方式发生了一个变化;线性的前缀和:前缀和;线性的差分:差分;线性的这两个东西的结合:线段树;在树上就分别是:开一个数组表示这个节点的子树上的权值之和;树上差分;树链剖分;第一个树上面的前缀和就不讲了,很简单;来个树上差分;首先我们要知道树上差分维护的是一条边的值;倞阶指南上面有两幅图画的好;每次求边的值的时候会把大半棵树遍历一遍;在那条边的两个节点上打上+1的标记然后在LCA上打上-2的标记;代码int dfs
2021-07-10 17:41:42
368
2
原创 BST & TREAP
首先来个名字的解读;TREAP == TREE + HEAP;TREE不是普通的TREE而是BST;BST给定你一颗二叉树,树上的每个节点都带有一个数值,成为节点的关键码,也就是后面的key;BST有两个性质,第一个性质就是左子树的所有节点的key都要小于等于该节点,第二个性质就是右子树的所有节点key都要大于等于该节点,满足上述性质的二叉树就是一颗二叉查找树BST;#include<iostream>#include<cstdio>using namespace st
2021-07-06 09:26:59
142
1
原创 【Roadblocks|次 短 路】P2865
这题呢很考验对最短路的理解;必须清楚的了解各个算法的步骤,每个操作这么做的原因才能作出合理适当的改造;求次短路和最短路还是有挺大区别的;最短路这个玩意两种主要算法是DIJKSTRA和SPFA,这两种算法在求最短路的时候还是有比较大的区别的;DIJKSTRA是用有限度列去更新;而SPFA是一次次的松弛;但是这题求的是次短路,不是次短路;为此DIUJKSTRA的st或者说是vis数组就不能拿出来用了;因此我们,对于每次寻找出来的边寻找几条规律;1.比最短路好2.比次短路好3.没屁用1.对于
2021-07-02 14:02:54
195
5
原创 【线段树|数论】P1471
还是Y总讲得好;线段树里面的东西一定要满足结合律;首先看下这题目要给我们求的东西是平均数和方差;那么在草稿纸上排下草稿,用数列中常见的信息比如区间长度,平均数,sum,这几个参数去看看怎么合并两个区间;推出来了就套上板子就可以了;就是线段树这个毒瘤特别难写;参数符号不要打错,输入输出时候%lld %lf不要打错;每次每个操作需要更新的参数最好列出来;struct里面存够转移时所需要的信息;代码#include<iostream>#include<cstdio>
2021-07-01 11:24:48
134
4
原创 龟 速 乘
因为标题要五个字所以加了空格;龟速乘是为了防止算乘法时候溢出的一种算法;int mul(int a,int b,int k){ int ass=0; for(;b;b/=2){ if(b&1) ass+=a,ass%=k; else a+=a,a%=k; } return ass;}
2021-06-30 20:50:55
179
2
原创 有向图的强连通分量
有向图的强连通分量就是指在一张有向图中,存在一个子图,子图之间的任意两个点可以直接或者间接的到达另一个点,那么就说明这个子图是原图的一个联通分量,最大的那个就是强连通分量;求出一个图的强连通分量,能对这个图进行缩点,从而让这个图变成一个有向无环图,因为如果缩点之后还有环,那么那个环就是一个连通分量,说明缩的不够彻底;有向无环图就能进行topo排序;求强连通分量的一个常见的方法就是太君TARJAN算法;就是说,你在DFS遍历整张图的时候,每次都把这个点的DFS序,然后把这个点能继续遍历到的最早的DFS序
2021-06-29 16:40:29
1221
2
原创 状态机模型DP
这个模型是Y总发现的;很妙啊;状态机是有限状态自动机的简称,是现实事物运行规则抽象而成的一个数学模型。比如这张图就是一个很典型的状态机的模型;因为DP是一个在DAG里面用topo序来递推的这么一个过程,因此我们可以用状态机来帮我们确定topo序;注意点就是最后的终态和初始化;步骤如下:首先设计状态,把几个状态画出来,作为节点然后我们考虑这几个节点之间有什么逻辑关系并依据此给它们之间加上有向边(还有自环)之后给边加上权值最后根据每个状态的入度写出状态转移方程直接上题了;黑虎
2021-06-29 12:52:10
533
4
原创 单源最短路径
先上图就记一下SPFA和DIJKSTRABELLMANFORD没有了,因为用不到;SPFA完整代码,包括判负环和求最短路;SPFA#include<iostream>#include<queue>#include<cstring>#include<cstdio>using namespace std;const int N=1010,M=100010;int n,m,s,h[N],w[M],e[M],ne[M],idx;int dis
2021-06-26 16:00:10
150
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人