随笔分类 -  学习笔记

摘要:之前的考试包括做题都有用过这个方法,算是个套路了。写一篇博客总结一下。 悬线法的用途 针对求给定矩阵中满足某条件的极大矩阵,比如“面积最大的长方形、正方形”“周长最长的矩形等等”。可以满足在时间复杂度为O(M*N)的要求,比一般的枚举高效的多,也易于理解。 悬线法的思路 悬线法,悬线的定义,就是一条 阅读全文
posted @ 2020-10-06 21:12 我亦如此向往 阅读(233) 评论(0) 推荐(0)
摘要:动态规划 数位DP 期望DP(参见题目) 斜率优化 线段树优化 矩阵快速幂优化 数据结构 分块(重学) 莫队(重学) 主席树 启发式合并 线段树合并 kruskal重构树 点分治 二维树状数组 CDQ分治与整体二分 图论 建图优化 2-SAT 数学 矩阵乘法 中国剩余定理 exgcd BSGS 欧拉 阅读全文
posted @ 2020-08-18 19:45 我亦如此向往 阅读(127) 评论(0) 推荐(0)
摘要:前言:因为我觉得CDQ分治和整体二分很像,也是一起学的,所以决定写一篇博客一起总结一下。部分内容借鉴洛谷日报第115期,感谢。 CDQ分治与整体二分对于强制在线的问题无能为力。但是当解决一些可以离线的问题时就可以把诸如树套树等数据结构吊起来打。 CDQ分治 讲到CDQ分治就要提到经典的偏序问题。 1 阅读全文
posted @ 2020-08-04 20:10 我亦如此向往 阅读(205) 评论(0) 推荐(0)
摘要:前言:遇到二维的问题都很虚,而且树状数组也不熟练……于是学了一发这个。 以下所有问题均在二维中 1.单点修改,单点查询 这个最简单,直接开一个二维数组搞一搞就完事了。 2.单点修改,区间查询 回想一下一维的树状数组是怎么搞的:我们维护序列的前缀和;查询区间的时候直接让前缀和相减就好。放到二维也是同理 阅读全文
posted @ 2020-08-03 14:32 我亦如此向往 阅读(155) 评论(0) 推荐(0)
摘要:前言:感觉有些地方挺有意思,写一篇博客记录一下。 一些前提: 1.OI中的博弈游戏是平等组合游戏。 2.所有情况都包含在一个有限的状态集中。 3.所有情况组合能构成一张有向无环图,即游戏能在有限步内结束,不存在无解的情况。 4.所有的规定对于游戏双方都是相同的。 5.两个人都是绝顶聪明,都会按照最优 阅读全文
posted @ 2020-08-01 09:08 我亦如此向往 阅读(557) 评论(0) 推荐(0)
摘要:对于询问$[1,n]$的第$k$小数,我们都知道直接上权值线段树就行了。那么对于任意区间的第$k$小数呢? 暴力一点,每次开一颗线段树。空间肯定爆炸。那么此时,主席树便应运而生。 主席树的主要思想就是:保留每次插入操作时的历史版本,以便查询区间第$k$小的数。先说流程。 1.先建一颗空的权值线段树, 阅读全文
posted @ 2020-07-17 19:44 我亦如此向往 阅读(154) 评论(0) 推荐(0)
摘要:前言:寒假Yousiki讲过斜率优化,但完全没有听懂。现在文化课解析几何也学了不少,终于能做一些题了。 有时候我们列出DP方程会得到形如这样的式子: $f[i]=max/min{f[j]+(a[i]-b[j])^2}+w[i](1\leq j<i)$(其实平不平方都随便啦)这个式子复杂度是$O(n^ 阅读全文
posted @ 2020-07-15 10:18 我亦如此向往 阅读(258) 评论(0) 推荐(0)
摘要:前言:鸣谢https://www.luogu.com.cn/blog/virus2017/shuweidp。感谢大佬orz 【引入】 首先要明白数位DP解决的是什么问题。 问题:求出在$[L,R]$内满足条件$f(i)$的$i$的个数。$f(i)$一般不与数的大小有关,而是与数的组成有关。(数的大小 阅读全文
posted @ 2020-07-10 11:18 我亦如此向往 阅读(199) 评论(0) 推荐(1)
摘要:前置知识:$dfs$序,线段树 我们可以回顾两个问题: 1.树上从$s$到$t$的路径,每个点权值加上$z$。 很简单。遍历整棵树即可。 2.求树上$s$到$t$的权值和。 $LCA$可做。可以利用$LCA$的性质$dis[s]+dis[t]-2*dis[lca]$做即可。时间复杂度$O(n\log 阅读全文
posted @ 2020-06-12 23:16 我亦如此向往 阅读(198) 评论(0) 推荐(0)
摘要:前言:先食用同余,会有更好的学习效果。 中国剩余定理:若$m_{1},m_{2}...m_{n}$是两两互质的正整数,$M=\prod_{i=1}^{n} m_{i},M_{i}=M/M_{i}$,$t_{i}$是线性同余方程$M_{i}t_{i}\equiv 1(mod m_{i})$的一个解。对 阅读全文
posted @ 2020-05-14 16:47 我亦如此向往 阅读(170) 评论(0) 推荐(0)
摘要:前言:从寒假开始学了好几遍,都没完全掌握QAQ 在讲同余之前,我们先来讲扩展欧几里得。 扩展欧几里得算法 首先,我们知道这样一个式子: $gcd(a,b)=gcd(b,amodb)$。 辗转相除法,可以用来求两个数的最大公因数。 而扩展欧几里得($exgcd$),是用来求不定方程$ax+by=c$的 阅读全文
posted @ 2020-05-10 20:48 我亦如此向往 阅读(232) 评论(0) 推荐(0)
摘要:前言:寒假讲过树形DP,这次再复习一下。 基本的树形DP 实现形式 树形DP的主要实现形式是$dfs$。这是因为树的特殊结构决定的——只有确定了儿子,才能决定父亲。划分阶段的话一般是$f[i][j][0/1]$。$i$表示以$i$为根的子树,$j$一般表示保留$j$个子节点,$0/1$表示选/不选这 阅读全文
posted @ 2020-05-05 22:47 我亦如此向往 阅读(332) 评论(0) 推荐(0)
摘要:单调队列是一种特殊的双端队列,其满足单调性,即内部元素单调递增或单调递减。单调队列可以用数组模拟,也可以用$STL$中的$deque$实现。 例题 最大子序和 给定一个长度为$N$的整数序列,从中找出一段长度不超过$M$的连续子序列,使得子序列中所有数的和最大。 $N,M\leq 3*10^5$。 阅读全文
posted @ 2020-05-03 22:43 我亦如此向往 阅读(177) 评论(0) 推荐(0)
摘要:考虑三种情况: 1.从左端点开始,是否要跨越。 2.从右端点开始,是否要跨越。 3.从中间开始,向两边延伸。 代码: void pushup(int index) { tree[index].s=tree[index*2].s+tree[index*2+1].s; tree[index].ls=ma 阅读全文
posted @ 2020-05-01 08:47 我亦如此向往 阅读(154) 评论(0) 推荐(0)
摘要:前言:背包学了无数遍,这次总算能记住点东西了QAQ 背包是线性DP中一类重要而特殊的模型。 0/1背包 给定$n$个物品,其中第$i$个物品的体积为$w_{i}$,价值为$c_{i}$。现在给你一个体积为$m$的背包,问怎样选择使得物品总价值最大? 我们先考虑朴素算法。 设$f[i][j]$为已经考 阅读全文
posted @ 2020-04-13 21:59 我亦如此向往 阅读(148) 评论(0) 推荐(0)
摘要:前言:线性DP是DP中最基础的。趁着这次复习认真学一下,打好基础。 一·几点建议 1.明确状态的定义 比如:$f[i]$的意义是已经处理了前$i个元素,还是处理第$i$个元素?这对于后期的调试非常重要。 2.明确边界状态 比如:$f[0]$是等于$0$还是等于$1$又或是$f[0]=a[1]$?当然 阅读全文
posted @ 2020-04-07 21:19 我亦如此向往 阅读(187) 评论(0) 推荐(0)
摘要:K短路,顾名思义,是让你求从$s$到$t$的第$k$短的路。 暴力当然不可取,那么我们有什么算法可以解决这个问题? 首先,我们要维护一个堆。 struct node { int dist,pos; bool operator <(const node&x) const { return dist>x 阅读全文
posted @ 2020-04-01 23:10 我亦如此向往 阅读(180) 评论(0) 推荐(0)
摘要:前言:寒假讲过了二分图,但没有学会。现在趁着图论复习再学一遍。 定义:通俗点来讲,如果给你一张图,能将其分为两个点集且点集内部没有连边,那么此图为二分图。 关于二分图有一个性质:二分图一定不存在奇环。证明过程如下: 二分图的判定:我们采用染色法。 bfs图,假设把1个点标记成1,那么与它相邻的点都标 阅读全文
posted @ 2020-03-27 22:19 我亦如此向往 阅读(186) 评论(0) 推荐(0)
摘要:前言:本人是个DP蒟蒻,一直以来都特别害怕DP,终于鼓起勇气做了几道DP题,发现也没想象中的那么难?(又要被DP大神吊打了呜呜呜。 首先,区间DP是什么? 区间DP是一种以区间长度为阶段的DP方法。这种DP的解法较为固定,一般都是先枚举区间长度,再枚举左端点,根据左端点+长度推出右端点,然后枚举中间 阅读全文
posted @ 2020-03-22 22:07 我亦如此向往 阅读(252) 评论(0) 推荐(0)
摘要:给你一个含有$n$个未知数$m$个不等式的不等式组,求满足此不等式组的一组解。 我们拿一个不等式举例:$X_{i}-X_{j}\leq C_{k}$。 这和最短路算法里的松弛操作比较像:dis[to]>=dis[now]+edge[i].dis。所以我们可以将其转化为图:从$j$点到$i$点连一条长 阅读全文
posted @ 2020-03-14 22:03 我亦如此向往 阅读(171) 评论(0) 推荐(0)