摘要: 友链 \(\color{Blue} {XYY1411}\) \(\color{Red} {LawrenceSivan}\) \(\color {Black}{Renamoe}\) \(\color{dark pink}{Rsdbk\_husky}\) \(\color{Orange}{wsy\_ji 阅读全文
posted @ 2021-08-12 19:45 ¶凉笙 阅读(162) 评论(0) 推荐(0)
摘要: [题解] CF1554B Cobb 传送门 题意 给出一个长度为 \(n\) 的数列,求出 \(i\times j-k\times (a_i|a_j)\) 的最大值。 解题报告 严格做法其它题解已经讲的很明白了,来一个玄学做法。 考场上就感觉这个东西肯定不是全扫过一遍的。 我们可以把结果分成两项来看 阅读全文
posted @ 2021-08-12 18:32 ¶凉笙 阅读(70) 评论(0) 推荐(0)
摘要: [模板] 插头DP——从入门到入坟 陈丹琦——《基于连通性状态压缩的动态规划问题》 传送门 模板是插头DP的入门题,询问 带障碍网格中的合法回路个数。 概念类 棋盘模型问题:采用逐行,逐列,逐格的状态转移方式。 对于此题,逐格转移是最快的。 插头:整个 DP 中的核心。 定义 对于一个四联通问题来说 阅读全文
posted @ 2021-08-12 18:32 ¶凉笙 阅读(139) 评论(0) 推荐(0)
摘要: [总结] 字符串的最小表示 给定一个字符串 \(S\),如果不断把它的最后一个字符放到开头,会形成 \(n\) 个字符串,它们循环同构。 这些字符串中字典序最小的,叫做字符串 \(S\) 的最小表示。 算法分析 POJ1509 Glass Beads 板子题 对于如何构造,首先要先把字符串复制一倍, 阅读全文
posted @ 2021-08-12 18:31 ¶凉笙 阅读(268) 评论(0) 推荐(0)
摘要: [总结] 补图联通块的求法 [POI2007]BIU-Offices 补图联通块的 链表解法 。 题意 求补图联通块的数量以及每个块内的元素个数。 解题报告 首先考虑一种暴力解法: 每次枚举到当前节点 \(u\) ,都向没有边相连的节点 \(v\) 暴力连边(貌似没有优化建图的方法)。 这么做是 \ 阅读全文
posted @ 2021-08-12 18:30 ¶凉笙 阅读(266) 评论(0) 推荐(0)
摘要: [模板] manacher manacher 算法,又叫马拉车算法,是一种在线性复杂度内求得任意长度为奇数的字符串的最长回文子串的算法。 算法构造思路 核心是维护当前最长回文覆盖和最远右端点。 可以维护两个指针:\(pos\) 和 \(maxr\),其中 \(maxr\) 表示当前回文子串中的最右端 阅读全文
posted @ 2021-08-12 18:29 ¶凉笙 阅读(69) 评论(0) 推荐(0)
摘要: [题解] [USACO13MAR]Necklace G 传送门 前置知识 AC 自动机。 如果你不会,可以看看 这篇文章(我不会告诉你我是来推销博客的。 请确保您已经学会 AC 自动机。 解题报告 对于题中的两个字符串,显然奶牛的名字是模式串,我们先把它插入到 AC 自动机中。 没有什么正确的贪心做 阅读全文
posted @ 2021-08-12 18:28 ¶凉笙 阅读(71) 评论(0) 推荐(0)
摘要: [模板] AC自动机 AC 自动机是以 Trie 树的结构 为基础,结合 KMP 的思想进行的一种多模式匹配算法。 典型应用是:用一个文本串来匹配多个模式串。 Trie 树构建 和 Trie 树模板没有区别,还是要记录模式串的结束位置。 放在 AC 自动机的算法里,一个结点表示一个字符串 \(S\) 阅读全文
posted @ 2021-08-12 18:27 ¶凉笙 阅读(75) 评论(0) 推荐(0)
摘要: [数据结构] 莫队 莫队是一种基于分块思想的离线算法。 本文章介绍初等莫队。 今天才学会带修 普通莫队 [国家集训队]小Z的袜子 一个板子题,要求维护平方和。 直接给出公式吧: \(ans=\frac{\sum_{i=1}^c x_i^2-(R-L+1)}{(R-L+1)(R-L)}\) 莫队的基本 阅读全文
posted @ 2021-08-12 18:26 ¶凉笙 阅读(66) 评论(0) 推荐(0)
摘要: [数据结构] Splay 与 Treap 相比,并没有堆性质的限制,而是通过其灵活变换维持复杂度。 是均摊 \(\text O(logn)\) 的数据结构。 本来 Zhang_RQ 早就讲了,今天才学会 概念类 需要维护的 基本 东西有: 左右儿子,父亲,权值,一般会维护 \(sz\) 和 \(cn 阅读全文
posted @ 2021-08-12 18:23 ¶凉笙 阅读(88) 评论(0) 推荐(0)
摘要: [模板] 动态树 LCT 今天终于把这东西学会了。 比大模拟还难写。 概念类 Link-Cut-Tree 是用来解决 动态树 问题的一种数据结构。 类似于轻重链剖分,这里使用 虚实链剖分 ,同时利用 Splay 灵活多变的性质来维护动态操作,其中 每一条实链都用一棵 Splay 来维护。(也叫作 A 阅读全文
posted @ 2021-08-12 18:22 ¶凉笙 阅读(97) 评论(0) 推荐(0)
摘要: [模板] BSGS 求一种特殊同余方程,\(a^x≡b\ (mod \ P)\) 的最小整数解,其中 \(a \ P\) 互质 的一种算法。 又叫做 Baby Step,Giant Step(大步小步)算法。 算法 设 \(x=i*t-j\),其中 \(i=\sqrt{p}\) ,\(0\leq j 阅读全文
posted @ 2021-08-12 18:21 ¶凉笙 阅读(45) 评论(0) 推荐(0)
摘要: [题解] P1654 OSU! 传送门 解题报告 题意描述自己看吧。 考虑到两个公式: \((a+b)^2=a^2+2ab+b^2\) \((a+b)^3=a^3+3a^2b+3ab^2+b^3\) 不妨设 DP 数组 \(f[i][0/1]\) 表示第 \(1\) 到 \(i\) 位 \(1\) 阅读全文
posted @ 2021-08-12 18:20 ¶凉笙 阅读(44) 评论(0) 推荐(0)
摘要: [总结] 线性筛与积性函数 利用线性筛中一个数仅仅被它最小的质因子筛掉的性质,结合积性函数的特殊性质,往往可以预处理出积性函数的值。 \(\varphi(x)\) 设 \(P\) 是质数,显然 \(\varphi(p)=p-1\)。 根据定义式:\(\varphi(x)=x\cdot \prod_{ 阅读全文
posted @ 2021-08-12 18:20 ¶凉笙 阅读(94) 评论(0) 推荐(0)
摘要: 题解 CF1540B Tree Array 期望题,思维题,dp(递推)题,暴力题 传送门 题意 对一棵 \(n\) 个点无根树进行染色操作,染色规则如下: 开始时,等概率地 随机找到一个点将其染色; 然后 等概率地 对 至少一条边连接已染色结点 的未染色结点进行染色。 最终会形成一个染色序列 \( 阅读全文
posted @ 2021-08-12 18:19 ¶凉笙 阅读(54) 评论(0) 推荐(0)
摘要: 题解 P4363 [九省联考2018]一双木棋chess 传送门 轮廓线状态压缩 \(DP\) 题意 博弈游戏,两人轮换填数。 一个格子可以被填上数 当且仅当 其上面和左面的格子都填上了数。 两人都希望自己的分数之和减去对面的分数之和最小,求出最小值(单向,即 \(min\{sum1-sum2\}\ 阅读全文
posted @ 2021-08-12 17:40 ¶凉笙 阅读(86) 评论(0) 推荐(0)
摘要: [动态规划] 背包扩展 参考于 《背包九讲》中的一些问题和思路 。 背包九讲 混合背包的问题 \(01\) 背包和完全背包 按照枚举顺序的不同: 当前物品符合 \(01\) 背包性质,倒序循环。 符合完全背包性质,正序循环。 比较简单的思路。 三种背包 for i 1 to N if 第 i 件物品 阅读全文
posted @ 2021-08-12 17:39 ¶凉笙 阅读(68) 评论(0) 推荐(0)
摘要: [总结] 位运算 位运算中的优化 概念类 请保证您已经学会了位运算四大操作。 净运行时间约 30ms,比加法运算(约 40ms)快较多,是因为全是按二进制位计算。但加减与位运算关系并不大,所以利用位运算主要是利用左右移位的高速度。 位运算的操作基本上都能够在一个 \(clock type\) 中完成 阅读全文
posted @ 2021-08-12 17:38 ¶凉笙 阅读(96) 评论(0) 推荐(0)
该文被密码保护。 阅读全文
posted @ 2021-08-12 17:38 ¶凉笙 阅读(1) 评论(0) 推荐(0)
摘要: [模板] 矩阵树定理 [HEOI2015]小 Z 的房间 概念类 关联矩阵 对于 \(n\) 个点 \(m\) 条边的无向图,定义关联矩阵 \(G:\) 对于途中第 \(k\) 条无向边 \((u,v)\),令 \(G_{(u,k)}=-1,G_{(v,k)=1}\) 对于这个无向图来说,关联矩阵长 阅读全文
posted @ 2021-08-12 17:34 ¶凉笙 阅读(97) 评论(0) 推荐(0)
摘要: [模板] 异或高斯消元 开关问题 对异或矩阵进行消元,与普通实数消元可以说仅有一处不同: 当枚举到每一行进行异或消元时,当且仅当这一行的当前主元存在才可以消元。(否则矩阵的意义就改变了) #include <cstdio> #include <cstring> #include <iostream> 阅读全文
posted @ 2021-08-12 17:34 ¶凉笙 阅读(99) 评论(0) 推荐(0)
摘要: [题解] 背包(同余) 背包 题意 给你 \(n\) 个物品,个数无限,要求用最少的物品来塞满一个巨大的背包 \(M\),\(M\in[10^{10},10^{18}]\)。 解题报告 不妨观察一组样例: 10000000001 3 23 51 100 显然结果是:\(100000004\) 我相信 阅读全文
posted @ 2021-08-12 17:33 ¶凉笙 阅读(93) 评论(0) 推荐(0)
摘要: 题解 CF1536C Diluc and Kaeya 传送门 更差的阅读体验 题意 给你一个字符串 \(S\),其中只包含 'K' 或 'D' 两种字符,要求划分这个字符串使得各部分的 \(n(D):n(K)\) 相同,其中 \(n(D)\) 表示 \(S\) 中字符 'D' 出现的个数。 其实本题 阅读全文
posted @ 2021-08-12 17:32 ¶凉笙 阅读(68) 评论(0) 推荐(0)
摘要: [题解] DAG上的 0/1 背包 题目来源[2021-NOI教师培训T4] 传送门(S2OJ) 题意描述 有一个 \(n\) 个点 \(m\) 条边的 \(DAG\),每个点都有一个权值和体积。 背包最大容量为 \(W\),要求从 \(1\) 号点走到 \(n\) 号点使得权值和最大,在此前提下满 阅读全文
posted @ 2021-08-12 17:31 ¶凉笙 阅读(134) 评论(0) 推荐(0)
摘要: [总结] Codeforces Round #724 (Div. 2) A. Omkar and Bad Story 传送门 本题有两种解法。 暴力模拟,借用 \(queue\)。 代码为题解代码。@Jr_zLiwen #include<bits/stdc++.h> #define rep(a,b, 阅读全文
posted @ 2021-08-12 17:31 ¶凉笙 阅读(48) 评论(0) 推荐(0)
该文被密码保护。 阅读全文
posted @ 2021-08-12 17:30 ¶凉笙 阅读(1) 评论(0) 推荐(0)
摘要: 线段树维护桶排序 类似于【HEOI2016】排序。 可以用线段树维护 \(0/1\) 序列,同样也可以维护 \(26\) 个字母或者有限个数字(合理外推的结果)。 代码非原创。 #include<bits/stdc++.h> #define re register using namespace s 阅读全文
posted @ 2021-08-12 17:29 ¶凉笙 阅读(66) 评论(0) 推荐(0)
摘要: [题解] 跳跳棋 构造题,好题! 传送门 题意 数轴上有三个点,他们之间不可重叠。 一个点只能沿另一个点对称的方向和长度跳跃,且一次能且仅能越过一个点。 每一次上述操作看做一个步骤,给出当前状态和结果状态(\(6\) 个坐标),输出解数。 解题报告 手玩一下这个过程,可以把状态的变换分为两类: 两边 阅读全文
posted @ 2021-08-12 17:29 ¶凉笙 阅读(103) 评论(0) 推荐(0)
摘要: P7519 [省选联考 2021 A/B 卷] 滚榜 传送门 状压 \(DP\) + 费用提前 首先这道题对于 \(n\leq 10\) 的数据,可以枚举全排列 \(O(n*n!)\) 来贪心的分配,看看最后一个能不能符合题意即可。 这样就有 \(60 \ pts\) 的好成绩了 不难想到这是个状压 阅读全文
posted @ 2021-08-12 17:28 ¶凉笙 阅读(118) 评论(0) 推荐(0)
摘要: [模板] 线段树合并 传送门--雨天的尾巴 一些概念与心得 线段树合并顾名思义,将两棵线段树进行信息合并的过程(具体来说可以是把一个线段树接到另一个线段树上的过程)。 由于内存量一般过大,使用 动态开点线段树,用以节省大量内存(可以采用 引用“&” 的方式)。 合并时尽量避免多开点,因此需要像主席树 阅读全文
posted @ 2021-08-12 17:27 ¶凉笙 阅读(92) 评论(0) 推荐(0)
摘要: 题解 P4886 快递员 传送门 前缀部分 前缀知识:点分治。 对于此题而言,与其说是点分治的题,不如说是利用了点分治的递归思想,因此如果你没有学过点分治也没问题。 题解 更好的阅读体验 首先是树上路径问题,很自然的想到点分治。 题意不再赘述,但是本题的最高价值就在于思考如何才能取得答案最优。 答案 阅读全文
posted @ 2021-08-12 17:26 ¶凉笙 阅读(59) 评论(0) 推荐(0)
摘要: [模板] Trie 树 听机房人说这是个特别简单的数据结构 于是他错误的点名开始了 \(Trie\) 树一般有两种操作(具体问题具体修改): 定义 定义一个类似于邻接表的东西和初始节点 其中 \(t\) 数组第二维表示 \(c\) 字符在当前节点指向的节点编号 int trie[maxn][26], 阅读全文
posted @ 2021-08-12 17:25 ¶凉笙 阅读(49) 评论(0) 推荐(0)
摘要: 题解 [POI2012]OKR-A Horrible Poem 字符串哈希题。 传送门 题目描述 给你一个字符串 \(S\)(\(|S|\leq 5e5\)) ,有 \(q\) (\(q\leq 2e6\))个询问,每个询问有一段区间 \((l,r)\) ,求出该子串 \(S_{i-j}\) 的最短 阅读全文
posted @ 2021-08-12 17:23 ¶凉笙 阅读(21) 评论(0) 推荐(0)
摘要: [总结] 基环树 基环树 \(\in\) \(NOIP\) 考纲 概念类 基环树的def 与普通树类似,仅仅看上去形态多了一个环(可以理解为树加了一条边),所以叫基环树。 基环树的顶点数和边数相等。 类似这样:( \(copy\) 的 ) 还有这样:(外向树) 、 当然还有这样:(内向树) 基环树直 阅读全文
posted @ 2021-08-12 17:23 ¶凉笙 阅读(123) 评论(0) 推荐(0)
摘要: [模板] 最短路树 概念类 定义构建一棵树,使得树上任意不属于根的节点 \(x\),$dis(root,x)=$原图走到 \(x\) 的最短路。 显然在跑 \(dij\) 的时候,最后更新到 \(v\) 的边可以在最短路树上。 这棵树的边数为 \(n-1\) 。 图片来自@Lis~ CF1076D 阅读全文
posted @ 2021-08-12 17:22 ¶凉笙 阅读(366) 评论(0) 推荐(2)
摘要: UVA1220 Hali-Bula的晚会 Party at Hali-Bula 传送门 一个树形$DP$ 没有上司的舞会升级版 和这道题第一问几乎一样,或者说变简单了 需要记录选与不选 \(0/1\),这道题只是多了一个唯一性问题(\(d\) 数组记录唯一性): 对于 \(f[u][1]\) \(f 阅读全文
posted @ 2021-08-12 17:21 ¶凉笙 阅读(39) 评论(0) 推荐(0)
摘要: P2375 [NOI2014] 动物园 不难发现,这道题的 \(num\) 数组是一个求和的过程,看一下下面这张 \(copy\) 的图: 也就是说对于 \(num[i]\) 和 \(num[next[i]]\)(弱化 \(num\):可重叠),所有的 \(num[next[i]]\) ,$ num 阅读全文
posted @ 2021-08-12 17:20 ¶凉笙 阅读(51) 评论(0) 推荐(0)
摘要: P4298 [CTSC2008]祭祀 (模板--最长反链) 最长反链 \(def:\) 在有向无环图中,存在一个点的集合,这个集合中两个点谁都走不到谁。这个集合叫做最长反链 可以理解为 \(DAG\) 的最大独立集 其中:有向无环图的最长反链等于最小(少)链覆盖 其实真正的 \(Dilworth\) 阅读全文
posted @ 2021-08-12 17:19 ¶凉笙 阅读(105) 评论(0) 推荐(0)
摘要: [动态规划] 斜率优化 $\ $ 与单调队列优化的区别 前面讲过,单调队列优化的是状态变量和决策变量分开的动态规划(在转移式中可以进行分离) 比如一些类似于: \(ans=max\{S[i]-min_{i-M\leq j\leq i-1}\{S[j]\} \}\) \(F[i,j]=max_{j-L 阅读全文
posted @ 2021-08-12 17:18 ¶凉笙 阅读(52) 评论(0) 推荐(0)
摘要: [题解] CF715C Digit Tree 点分治的一道好题。 难点在于去重,也就是 \(calc\) 函数。 #include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <map> 阅读全文
posted @ 2021-08-12 17:17 ¶凉笙 阅读(55) 评论(0) 推荐(0)
摘要: 细节 点分治详见: [图论] 点分治 这个板子有几个细节: 自己到自己也算一条路径 处理好 \(*2\) 或者 不$*2$ 之间的关系 多测不清空,亲人两行泪 #include <iostream> #include <cstdio> #include <cstring> #include <alg 阅读全文
posted @ 2021-08-12 17:16 ¶凉笙 阅读(15) 评论(0) 推荐(0)
摘要: P7514 [省选联考 2021 A/B 卷] 卡牌游戏 一个考场上差点想到正解的提,要是想到了就A了。 有思路一定要想下去!! 贪心做法 首先我们要明白: 翻的卡牌一定是一段后缀和一段前缀。(可能为空) 考场上想过能不能双指针贪心,后来发现不好处理。 在 \(a\) 数组单调的情况下,翻中间的卡牌 阅读全文
posted @ 2021-08-12 17:15 ¶凉笙 阅读(185) 评论(0) 推荐(0)
摘要: (凸包的)闵可夫斯基和:P4557 [JSOI2018]战争 定义 官方定义:两个点集 \(A,B\) 的闵可夫斯基和为: \(A+B={a+b\ |\ x\in A,y\in B}\) 通俗理解:从原点向图形 \(A\) 内部的每一个点做向量,将图形 \(B\) 向每个向量移动,所有的最终位置便是 阅读全文
posted @ 2021-08-12 17:14 ¶凉笙 阅读(306) 评论(0) 推荐(0)
摘要: vim 上手 用法 vim + 文件名//打开一个文件 \(vim\) 有三种模式: 命令模式(也是默认模式) 编辑模式(在命令模式下按 \(s\) 或 \(i\) 后进入编辑模式) 替换模式(目测没什么卵用) 通过这三个模式我们就可以愉快的敲代码了。 命令模式下的操作 dd "删除光标所在的当前行 阅读全文
posted @ 2021-08-12 17:12 ¶凉笙 阅读(40) 评论(0) 推荐(0)
摘要: [题解 P7516 [省选联考 2021 A/B 卷] 图函数](https://www.luogu.com.cn/problem/P7516) 一道思维题,考查点竟不是一些奇怪的操作 题意 函数 \(f(u,G)\) 的意义无非是: 在 \([1,u]\) 这段范围内的点 \(x\) (枚举到 \ 阅读全文
posted @ 2021-08-12 17:11 ¶凉笙 阅读(119) 评论(0) 推荐(1)
摘要: 点分治 一些定义 点分治,可以类似成图上(树上)的分治算法 利用 分治+递归,对于某些树上的限定路径进行静态统计的算法 是处理树上路径的一个极好的方法。如果你需要大规模的处理一些树上路径的问题时,点分治是一个不错的选择。 分治的点的错误选择会导致时间复杂度十分不稳定,需要结合树的重心进行优化,否则特 阅读全文
posted @ 2021-08-12 17:11 ¶凉笙 阅读(53) 评论(0) 推荐(0)
摘要: 二次扫描与换根法 一些定义 所谓二次扫描与换根法,就是一种处理无根树问题的方法 算法特点: 第一次扫描时。在 “有根树” 上进行一次 树形DP 用来处理关键数据(准备工作),进行一次 \(dfs\) ,此过程是 自下及上 的,符合常规 第二次扫描时。在刚才选定的根上进行 自上及下 的推导,借助第一步 阅读全文
posted @ 2021-08-12 17:10 ¶凉笙 阅读(343) 评论(0) 推荐(0)
摘要: 无向图最小环计数 原理 当 \(floyd\) 枚举到 \(k\) 层时,用 \(k-1\) 层的最短路来更新数据,即: \(i->k->j\) 代码实现 #include <iostream> #include <cstdio> #include <cstring> #include <algor 阅读全文
posted @ 2021-08-12 17:09 ¶凉笙 阅读(279) 评论(0) 推荐(0)
摘要: 题解 P4259 [Code+#3]寻找车位 题目描述 给你一张 \(n*m\) 的 \(0/1\) 点阵,要求支持下面两种操作: 修改一个点为它的异或值 查询以 \((l,s)\) 和 \((r,t)\) 为对角的矩阵中,最大的全 \(0\) 正方形的边长 数据范围 \(n*m\leq4*10^6 阅读全文
posted @ 2021-08-12 17:08 ¶凉笙 阅读(103) 评论(0) 推荐(0)
摘要: 网络流 一些定义和性质 建立反边,从 \((u,v)\) 流了 \(res\) 的流量就相当于给 \((v,u)\) 增加了 \(res\) 的流量 由于一个割肯定是 \(\geq\) 割的净流量的,所以最大流等于最小割 基本思路就是:在残量网络不断找增广路直到找不到为止 FF 算法 所以就诞生了下 阅读全文
posted @ 2021-08-12 17:07 ¶凉笙 阅读(62) 评论(0) 推荐(0)
摘要: 普通平衡树(分裂式) 一些原理 平衡树是一种 \(key\) 满足堆的性质,\(val\) 满足 \(BST\) 性质的一种二叉树 平衡树的 \(key\) 是随机生成数据,这使得他在合并的时候满足不同于 \(BST\) 的平衡性 与一般的 \(BST\) 类似,需要维护左右儿子,子树 size 以 阅读全文
posted @ 2021-08-12 17:06 ¶凉笙 阅读(49) 评论(0) 推荐(0)
摘要: 基本动态规划 背包 完全背包 每个状态都可以从上一个阶段或者当前阶段进行转移,利用正序循环解决。 疯狂的采药 #include <iostream> #include <cstdio> #define int long long using namespace std; int T,m; int m 阅读全文
posted @ 2021-08-12 17:03 ¶凉笙 阅读(53) 评论(0) 推荐(0)
摘要: 等比数列求和 如果 \(a_n=a_1*q^{n-1}\) 那么求得的和为: \(\frac{a_1(1-q^n)}{1-q}\) 分治题解 显然这题不可这么做。 我们可以考虑进行展开: \[ sum(p,c)=1+p+p^2+p^3+\cdots+p^c \] 如果 \(c\) 是奇数: \[ s 阅读全文
posted @ 2021-08-12 17:03 ¶凉笙 阅读(45) 评论(0) 推荐(0)
摘要: [总结] 基础算法(一) 内容 STL 二分 \(0/1\) 分数规划 STL 都有一定的常数,谨慎使用 #include<algorithm> 区间基本上都是左开右闭的。 \(sort\) 的本质是重载小于号。 \(sort(a,a+n,cmp)\) nth_element 作用是,调用完上述函数 阅读全文
posted @ 2021-08-12 17:01 ¶凉笙 阅读(55) 评论(0) 推荐(0)
摘要: [总结] 基础算法(二) 目录 分治 字符串 倍增 贪心 搜索 分治 分而治之 将一个难以直接解决的大问题,分割成一些规模较小的相同问题。 将枚举统计分成若干层,若干个部分。 每个部分统计一些贡献。 经典算法:归并排序,快速排序 分治具有的基本特征 该问题缩小到一定规模后可以容易地得到答案(边界) 阅读全文
posted @ 2021-08-12 17:01 ¶凉笙 阅读(21) 评论(0) 推荐(0)
摘要: 超级钢琴 这里提供了一个倍增求解子区间前 \(k\) 大值的算法。 首先求一个前缀和。 对于一个固定的左端点 \(i\) ,可以在 \([l,r]\) 的合法区间内找到一个最大的 \(sum[nw]\) 使得 \(sum[nw]-sum[l-1]\) 最大 然后我们对其进行分裂操作(分裂后的区间可能 阅读全文
posted @ 2021-08-12 17:00 ¶凉笙 阅读(54) 评论(0) 推荐(0)
摘要: P6185 【NOI Online #1 提高组】 序列 #include <iostream> #include <cstdio> #include <cstring> #include <cctype> using namespace std; #define LL long long cons 阅读全文
posted @ 2021-08-12 16:59 ¶凉笙 阅读(49) 评论(0) 推荐(0)
摘要: Fence \(F[i,j]=P_i* j+max_{j-L_i\leq k\leq S_i-1} \ \{F[i-1,k]+P_i* k\}\) #include <iostream> #include <cstdio> #include <cstring> #include <algorithm 阅读全文
posted @ 2021-08-12 16:59 ¶凉笙 阅读(57) 评论(0) 推荐(0)
摘要: 题面 Bill想要进行对一串字符进行压缩,使其使用的字符长度最短。 例如, \(AAAAAAAAAABABABCCD\) 可以压缩成 \(10(A)2(BA)B2(C)D\). \(“( )”\) 算2个字符串长度 \(n\leq100\) 题解 首先一看,\(DP\) 题,而且是区间 \(DP\) 阅读全文
posted @ 2021-08-12 16:58 ¶凉笙 阅读(94) 评论(0) 推荐(0)
摘要: 中国剩余定理 有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二。问物几何? 解线性方程组: \(\left(\begin{matrix} x\equiv b_1 \pmod{a_1}\\x \equiv b_2 \pmod{a_2}\\ \cdots \\ x\equiv b_n \pmod{ 阅读全文
posted @ 2021-08-12 16:54 ¶凉笙 阅读(248) 评论(0) 推荐(0)
摘要: struct node{ int len,num[1005]; node(){ len=0;memset(num,0,sizeof num); } node operator +(node a){ node res; res.len=max(a.len,this->len); int t=0; fo 阅读全文
posted @ 2021-08-12 16:50 ¶凉笙 阅读(23) 评论(0) 推荐(0)
摘要: \(C_n^m=\frac{n!}{m!(n-m)!}\) 此篇文章主要处理组合数的一些习题和一些组合数思想 例题 1.P3197 【HNOI2008】越狱 题目翻译(做题即翻译!) 有 \(n\) 个球,\(m\) 个盒子,盒子可以为空,问有多少种情况相邻的两个球在一个盒子里。 题解 考虑所有情况 阅读全文
posted @ 2021-08-12 16:49 ¶凉笙 阅读(112) 评论(0) 推荐(0)
摘要: 此篇文章参考于数学竞赛小丛书 《组合数学》 加法原理和乘法原理 一切排列组合的基础。 加法原理:把子集求和 乘法原理:把分步情况归一 无重复的排列与组合 排列(考虑顺序) 从 \(n\) 个元素中选出 \(m\) 个元素构成排列的方案数,用 \(A_n^m\) 表示: \(A_n^m=n(n-1)( 阅读全文
posted @ 2021-08-12 16:49 ¶凉笙 阅读(263) 评论(0) 推荐(0)
摘要: 埃筛 考虑这样一件事情:如果 \(x\) 是合数,那么 \(x\) 的倍数也一定是合数。利用这个结论,我们可以避免很多次不必要的检测。 如果我们从小到大考虑每个数,然后同时把当前这个数的所有(比自己大的)倍数记为合数,那么运行结束的时候没有被标记的数就是素数了。 代码实现 先把所有的数都看成素数,然 阅读全文
posted @ 2021-08-12 16:48 ¶凉笙 阅读(38) 评论(0) 推荐(0)
摘要: 欧拉定理 若 \(gcd(a,b)=1\),则 \(a^{\varphi(m)}\equiv 1 \ (mod \ \ m)\) 扩展欧拉定理 只能在指数比 \(\varphi(p)\) 大的时候使用(下面第三个) 内容: $ ab\equiv\left{\begin{array}{rcl} a{b 阅读全文
posted @ 2021-08-12 16:46 ¶凉笙 阅读(26) 评论(0) 推荐(0)
摘要: 一些概念 欧拉函数(Euler's totient function),即 \(\varphi(n)\) ,表示的是小于等于 \(n\) 和 \(n\) 互质的数的个数。 欧拉函数是积性函数,即对于满足 \(gcd(a,b)==1\), \(f[a* b ]=f[a]* f [b]\)。特别地,当 阅读全文
posted @ 2021-08-12 16:46 ¶凉笙 阅读(66) 评论(0) 推荐(0)
摘要: 一些定义 重儿子: 结点所有儿子里子树规模最大的结点,即$sz[ x ]$ 最大。 我第一次接触这个概念居然不是在这,而是在这。 P5666 CSP-S2019 树的重心 有时间再写题解吧,这是一个不错的思维题。 重链: 从重儿子一直延伸到叶子结点的路径。 树链: 任意两点间的距离 ( 不严谨的说。 阅读全文
posted @ 2021-08-12 16:40 ¶凉笙 阅读(57) 评论(0) 推荐(0)
摘要: 矩阵乘法 今天学习了矩阵,针不辍。 定义(想不清楚回到定义) 矩阵乘法便是两个矩阵的指定行与列的每个元素分别相乘再求和。 定义 \(*\) 的代码: mat operator *(const mat &x){ mat ans;ans.init(); for(int i=1;i<=8;i++) for 阅读全文
posted @ 2021-08-12 16:40 ¶凉笙 阅读(89) 评论(0) 推荐(0)
摘要: 原理: 每次选取一行的第 \(i\) 个未知数作为主元,把其他行的这个未知数的系数全部削成 \(0\),最后这些式子肯定每个包含一个未知数,这个未知数就是这一行的主元。 注意事项: 每次选取系数最大的并且没选过的作为主元进行交换顺序。$e.g.$选取第 \(i\) 个未知数为主元就换到第 \(i\) 阅读全文
posted @ 2021-08-12 16:36 ¶凉笙 阅读(43) 评论(0) 推荐(0)
摘要: CF351E Jeff and Permutation 这是一道思维题。 传送门 题意分析: 给你 n 个数组成的序列,你可以对任意数进行取反操作,你需要使得这个序列的逆序对个数最少,并输出这个个数。 题解 对题目进行等价变形 不妨把这 \(n\) 个数全部取绝对值变成非负整数再考虑进行操作,显然这 阅读全文
posted @ 2021-08-12 16:35 ¶凉笙 阅读(63) 评论(0) 推荐(0)
摘要: 传送门 一道非常巧妙的线段树题 && 思维题 首先题意非常好理解,最暴力的做法无非是根据操作依次排序...然而我没试过多少分啊,可能全wa,毕竟是省选题。 这就是本题的重点:二分 二分第 q 个位置的值,把序列中所有大于等于 mid 的全部设成 1 ,小于的设成 0,我们由于并不在乎其他的值是什么, 阅读全文
posted @ 2021-08-12 16:34 ¶凉笙 阅读(33) 评论(0) 推荐(0)
摘要: BFS 原理 对于 dijsktra 算法,第一次到达终点 t 的道路必定是最短路,手玩一下可以得到,第 k 次到达 t 的道路是 k 短路。 A* 优化 估价函数定义为: 从当前结点走到终点的最短路,这个值一定小于等于真实路径长度。 A* 算法使得图中很多结点的访问次数都远小于 k ,实现较快。 阅读全文
posted @ 2021-08-12 16:34 ¶凉笙 阅读(52) 评论(0) 推荐(0)
摘要: 左偏树的合并(小根堆为例) 模板要刻在 DNA 里 我们需要把根大的接到根小的上面,用一个swap 就可以搞定从而交换根,设当前根为 x ,需要将 y 接到 x 的右子树上去,左子树是不动的,递归过程中维护其左偏的性质。 merge操作: int merge(int x,int y){ if(!x| 阅读全文
posted @ 2021-08-12 16:33 ¶凉笙 阅读(37) 评论(0) 推荐(0)
摘要: 二分图的特点 什么题用二分图?? 当题目中的元素可以分为"0/1" 两个部分时,可以尝试用二分图匹配解决问题。 二分图公式 最小路径覆盖= n - 最大匹配 最大独立集 = n - 最大匹配 嗯就是这样。 模板:二分图最大匹配 匈牙利算法: 核心思想:反复横跳,找增广路(可以借鉴网络流) #incl 阅读全文
posted @ 2021-08-12 16:32 ¶凉笙 阅读(39) 评论(0) 推荐(0)
摘要: define 想不清楚回到定义 可持久化权值线段树 个人理解: 与线段树不同的地方在于,线段树维护的是某一段序列的某个特征。 带权线段树维护的是区间的桶,以数据的值作为下标,像桶一样记录数据出现的次数,且带有线段树的特征。 主席树 主席树是一种特殊的带权二叉树,或者说他由 n 个带权二叉树组成,可以 阅读全文
posted @ 2021-08-12 16:31 ¶凉笙 阅读(60) 评论(0) 推荐(0)
摘要: 例题 NOIP2012 开车旅行 传送门 题目大意(做题即翻译) 给你一个已知的有向图,每个结点有一个编号即高度,从西到东排列且只能从西到东走,任意两点间的距离为他俩点的高度差的绝对值。 现在有两个人要轮流开车,任选一个起点 S 出发,A 开一天车,B 开一天车。不同的是,A 都会开往第二近的地方, 阅读全文
posted @ 2021-08-12 16:30 ¶凉笙 阅读(64) 评论(0) 推荐(0)
摘要: 传送门 1. 朴素 bfs ,map 判重,实现最简单 #include <iostream> #include <cstdio> #include <unordered_map> #include <algorithm> #include <queue> #define int long long 阅读全文
posted @ 2021-08-12 16:30 ¶凉笙 阅读(73) 评论(0) 推荐(0)
摘要: 特点 二分法适用于解决最小值最大化 or 最大值最小化的问题。 在难题里,二分可能就是一个优化时间的工具,然而,二分的思想是非常重要的。 适用于二分的题目: 二分通常是指二分答案,难点变成判断当前假定的答案能否满足题意。可以二分的题目答案必须有单调性。 例题 1.让我们来写一写POI的 DYN-Dy 阅读全文
posted @ 2021-08-12 16:29 ¶凉笙 阅读(64) 评论(0) 推荐(0)
摘要: 特点与二分对比 和二分类似,也是加速枚举过程。 不同之处:倍增通常需要预处理一些东西,预处理复杂度高,判断合法性复杂度低。二分则相反。 ST表 ST表是一种很好的反应倍增思想的数据结构,不仅限于维护区间内的最大值,下面例题(坑了半天的紫题)可以很好的体现出这一点。 用一个 f[ i ][ j ] 二 阅读全文
posted @ 2021-08-12 16:28 ¶凉笙 阅读(216) 评论(0) 推荐(0)
摘要: 计数方法策略 介绍完两个概念,现在我来介绍10个计数方法策略: 1.特殊元素和特殊位置优先策略 例题: 由0,1,2,3,4,5可以组成多少个没有重复数字的五位奇数。 题解: 由于末位和首位有特殊要求,应该优先安排,以免不合要求的元素占了这两个位置。 首先考虑末位:1,3,5为奇数,我们要从中选出来 阅读全文
posted @ 2021-08-12 16:27 ¶凉笙 阅读(597) 评论(0) 推荐(0)
摘要: 树形dp 概念类 树形dp是一种很优美的动态规划,真的很优美真的,前提是在你学会它之后。 实现形式 树形dp的主要实现形式是dfs,在dfs中dp,主要的实现形式是dp[ i ][ j ][ 0/1 ],i是以i为根的子树,j是表示在以i为根的子树中选择j个子节点,0表示这个节点不选,1表示选择这个 阅读全文
posted @ 2021-08-12 16:26 ¶凉笙 阅读(400) 评论(0) 推荐(0)
摘要: 一道非常好的 dp 和理解滚动数组的题 题目传送门 理解题意(做题即翻译) 有 n 个人摆成环形在玩传球游戏,每个人可以传给任意编号的人,但是某个 zz 觉得太简单了,于是加了 k 条限制:其格式为 u 不可传球到 v 这个人,问 m 次传球后回到 1 的方案数是多少。 数据范围很重要 n ⇐ 1e 阅读全文
posted @ 2021-08-12 16:25 ¶凉笙 阅读(591) 评论(0) 推荐(1)
摘要: 树的直径 方法一 : 两次dfs 方法二 : 利用动规求解,以每个结点向下延伸的最长长度为状态,顺便记录下向下延伸的次长长度,则数的直径便为 d1 + d2。 void dfs(int x,int fa){ f[x] = 1; int mx = 0; for(int i=head[x];i;i=nx 阅读全文
posted @ 2021-08-12 16:23 ¶凉笙 阅读(51) 评论(0) 推荐(0)
摘要: 扩展Lucas定理 为什么需要扩展Lucas定理 我们都知道,Lucas定理是用来求组合数取模一类问题的定理,但是当模数 p 为合数时,我们就无法使用定理来递归求解。 扩展Lucas定理的核心思想 唯一分解定理 + CRT(中国剩余定理) 说人话便是求出每个C(n,m)%p^k,在根据中国剩余定理求 阅读全文
posted @ 2021-08-12 16:22 ¶凉笙 阅读(51) 评论(0) 推荐(0)
摘要: 随机数 example: #include <iostream> #include <cstdlib> #include <ctime> using namespace std; int main() { srand((int)time(0)); // 产生随机种子 把0换成NULL也行 for ( 阅读全文
posted @ 2021-08-12 16:19 ¶凉笙 阅读(53) 评论(0) 推荐(0)
摘要: 绿豆蛙的归宿 一个我不知道的神奇blog宠物,去他喵的 解法:拓扑排序 + 数学期望 对于数学期望,紫书给出的定义如下: 随机变量 X 的数学期望 EX 就是所有可能值按照概率加权的和 所以只要建好图就行了不知道它是怎么变蓝的,之后我们对其进行两种类型的选择性操作: 1.逆推: 设对于结点 i,f[ 阅读全文
posted @ 2021-08-12 16:19 ¶凉笙 阅读(30) 评论(0) 推荐(0)
摘要: https://www.luogu.com.cn/problem/SP1043 #include <iostream> #include <cstdio> #include <algorithm> #include <cctype> #define re register #define ll lo 阅读全文
posted @ 2021-08-12 16:18 ¶凉笙 阅读(52) 评论(0) 推荐(0)