03 2024 档案
摘要:[Ynoi2013] D2T2 link 对序列分块,最大子段和是一个可以合并的信息,对于一个询问,如果对每个整块求出这块保留 内的数得到的最大子段和相关信息(和,最大前缀,最大后缀,最大子段和)则把它们合并就是答案。 一个长度为 的块其实只有 \(\mathcal
阅读全文
摘要:详细揭秘 整体二分 考虑这样一个问题: 给你一个序列,每次查询区间 kth。 如果你不会主席树,你可能会考虑二分答案:二分一个 ,看看它在区间中的 rank,与 比较。 这样子单次暴力是线性对数的,不太妙。问题出在哪里呢?你发现每次找 rank 是线性的,很慢。 我们把多个
阅读全文
摘要:详细揭秘 SAM 这个咕了好久 这个东西很玄乎,大家抽象理解就好。 首先,SAM 是啥: 后缀自动机。 每个节点代表一个状态,里面存着一些原串的子串(但是不会在代码中存)。 每个节点有转移边指向其他节点,一个字符最多有一条它的转移边。 整个 SAM 的节点和转移边构成 DAG(有向无环图)。 每个节
阅读全文
摘要:详细揭秘 KMP 考虑失配的时候要重新到哪里开始匹配最优。 那显然是从已匹配部分的最长 border 开始啊。 像这样,跳到橙色 后继续判断 T 的紫色格子是否等于 S 的红色格子,如果不等于就继续跳。
阅读全文
摘要:详细揭秘 ACAM 首先明确 ACAM 处理的是多模式串单文本串问题。 先对所有模式串建 trie。然后对于每个点 维护 指针指向 trie 中最长的且是 的后缀的节点。 对于模式串为 he,hers,she,i,his 建出的 ACAM 如下 和 KM
阅读全文
摘要:vscode 的极快速配置 1.进入 vscode 官网下载最新版本,直接点 download for windows 即可 2.打开安装包,可能要去除安装路径中空格和中文 3.在 link 下载 MinGW 编译器,拉到最下面的离线下载,选 MinGW-W64 GCC-8.1.0 的 x86_64
阅读全文
摘要:Tricks 可以表示 行 列矩阵从 到 的路径数。AT1983 \(\displaystyle n^k=\sum_{i=0}^{\min(n,k)}{k \brace i}\binom n ii!=\s
阅读全文
摘要:根号数据结构 本文只是对 nzhtl1477 的课件内例题写写自己的理解,侵删。 最基础的动态分块 1.区间加,区间求小于 的数的个数 每块内维护 OV(有序表),整块查询 lower_bound,散块暴力查询。 修改的话散块可以重构,或者你注意到修改的位置在 OV 里拿出来也是有序的,
阅读全文
摘要:SP4487 Solution link 考虑用 fhq-treap 维护序列:按照 siz 进行 split,每次 split 出前 小的元素。于是这里就以序列下标为关键字,在平衡树中排序。 在 处单点插入的话执行 split(rt,p-1,x,y) 后对创造新节点 \(z
阅读全文
摘要:题解 UVA1594 【Ducci序列 Ducci Sequence】 原题 简单模拟 值得压行注意的是an和a1的减法 从头到尾扫的话an-a1时a1的值已经被改变 那我们就可以一开始把a1的值存到an+1 代码 // 此处应有头文件 int n,t; int a[20]; bool check(
阅读全文
摘要:题解 SP206 【BITMAP - Bitmap】 原题 此题暴力其实就可以水掉,甚至不需要搜索。 看一看数据: 1 <= n <= 182,1 <= m <= 182 还有时间限制: 时间限制 | 内存限制 4.00s | 1.46GB 我们用一个vector存储所有1的位
阅读全文
摘要:题解 SP50 【INCARDS - Invitation Cards】 原题 题目大意:给定一个简单有向图,设表示到的最短路径长度,求 \[\large \sum_{i=2}^n dis_{1,i} + \sum_{i=2}^n dis_{i,1} \
阅读全文
摘要:题解 SP27 【SBANK - Sorting Bank Accounts】 原题 这题可以直接暴力A 因为: 时间限制 | 内存限制 7.00s | 1.46GB 注意输入有空格,所以要用getline 代码 // 此处应有头文件 int n,t; string a[100
阅读全文
摘要:题解 P4955 【[USACO14JAN]Cross Country Skiing S】 原题 翻译,从学校OJ偷来的 乍一看,要求最小的难度值D,于是考虑二分答案 + bfs/dfs。 如果一个关键格能够到达关键格和 那么\((x
阅读全文
摘要:题解 P4536 【[CQOI2007]三角形】 原题 这是我们学校%你赛上的一道题。然而赛时只有70pts qwq。 首先显然可以得到当给出的三角形编号尾号为 时,仅有三个三角形与其相邻。 例如 仅与 相邻,
阅读全文
摘要:题解 P4212 【外太空旅行】 原题 前置芝士:模拟退火 题意:给你一个无向图,求出这个图的最大完全子图的大小。(即最大团问题) 众所周知,最大团问题是 问题。观察数据范围 ,我们可以用模拟退火完成此题。 一般的模拟退火题都是维
阅读全文
摘要:题解 P3831 【[SHOI2012]回家的路】 原题 这是我们学校膜你赛上的一道题。 感觉并没有紫题难度? 思路 一眼最短路,发现,如果枚举每两个点的话会爆掉。 那么换一种建边方式罢。 显然两个点可以互相到达,当且仅当它们的x坐标相同或y坐标相同 于是我们用一个v
阅读全文
摘要:题解 P2533 【[AHOI2012]信号塔】 原题 上次的题解被学长hack掉了,懒得调了,把退火做法放上来吧。 考虑模拟退火:选一个初始点,从这个点开始跑退火。问题是初始点怎么选。 首先所有点取平均大概是不怎么对的,只要很多点密集分布在一个区域再放一个点在很远处就可以卡掉。 发现这个圆只要能够
阅读全文
摘要:题解 P2097 【资料分发1】 原题 题意:给定一个无向图,求这个图的连通块数量。 蒟蒻不会Tarjan,懒得打dfs,于是就写了个简单的并查集。 如果起点和终点不在一个集合内,那么就将它们所在的集合合并 一开始将ans设为点数,每次合并将ans-1即可。 ps:不会并查集的同学可以参考这里 代码
阅读全文
摘要:题解 P1927 【防护伞】 原题 直接暴力枚举每一个点 最后求面积最小值就好了 代码 // 此处应有头文件 const double pi = 3.1415926535; int n; double ans = 1 << 30; // 2 ^ 30 struct node { int x,y; }
阅读全文
摘要:题解 P1532 【卡布列克圆舞曲 】 原题 一道较难搞的模拟 因为蒟蒻不会奇奇怪怪的STL 所以都是手打的 思路 一个数组b存储操作过程中的数 每次扫一遍判断是否开始循环 如果循环: 记录循环开始的位置k 从k开始到总操作次数len - 1(第len个循环了)输出b[i] 否则: len++,记录
阅读全文
摘要:题解 CF877D 【Olya and Energy Drinks】 原题 一道几乎板子的广搜题。(然而我调了10几次才过 我们只需要在广搜板子的基础上添加移动 步的部分即可 就像这样: int h[] = {-1 , 1 , 0 , 0}; int l[] = {0 , 0 , -1
阅读全文
摘要:题解 CF236B 【Easy Number Challenge】 原题 此题一个暴力就可以过了。 看着别的大佬不加记忆化吸口氧就过了,而我的却死活TLE 可能因为我人丑常数大? 注意到i*j*k的值会出现重复,所以考虑记忆化。 时间复杂度,跑得飞快 代码 cons
阅读全文
摘要:题解 CF120E 【Put Knight!】 原题 我一开始以为这题 为奇数就是先手赢,偶数就是后手赢 没想到还真是这样 那么要怎么证明呢? 一般地,在一个空棋盘上下出一枚棋,会有8个格子被这颗棋限制: X X X X K X X X X 容易看出,如果再放一枚新棋,会有2 , 4 ,
阅读全文
摘要:题解 AT4703 【Red or Blue】 原题 来介绍一下三元运算符: A ? B : C 如果表达式A为真,则执行B语句,否则执行C语句。 其作用就相当于: if(A) { B; } else { C; } 例如1 + 1 > 2 ? puts("I AK IOI") : puts("qwq
阅读全文
摘要:题解 AT945 【高橋君とお肉】 原题 来一篇正经的题解QwQ 显然我们要把肉分成耗费时间尽量平均的两堆。 于是考虑二分答案 那么怎么检测一个答案的正确性呢? 我们可以跑一个背包dp,让第一个烤肉架烤尽可能多的肉,最后检测第二个烤肉架能不能烤完剩下的肉即可。 时间复杂度
阅读全文
摘要:四十一(D) link 最小生成树,考虑将边权排序。然后每次暴力加边,判断是否已经联通,这样复杂度是 。 考虑 P1117 之法,对于当前边对应的长度 ,将序列上 的倍数的下标设为关键点。 那么一个形如 的串必定经过恰好两个关
阅读全文
摘要:四十六(C) link 考虑第一问。将地图黑白染色,那么每个骨牌占了一黑一白。 删去一个骨牌会得到两个空格。由题目知道,这两个空格位置一一对应一个状态。 我们只需计数有多少种可能的空格出现的方案。考虑一个骨牌移动,等价于将一个空格从头部前一格移到尾部。 那么建图,每个骨牌的头部前一格连向尾部一格,单
阅读全文
摘要:暑假(2) NOIP2023模拟测试赛(八) A 条路径共同经过的路径形成一条链。路径的其他部分要么停在链端点,要么发散开来,不重叠。 假设链为 。我们考虑计算以 为链一端的方案数。 1.若 不为祖孙关系 枚举 一端发散开来的路径数量
阅读全文
摘要:link 考虑随机游走状的高斯消元:对于题目中的一个可重集 ,令 表示,从 开始期望多少天后走到和 的集合。 则有两种转移,分别对应摆烂或不摆烂: (定义多重集减一个数为该集合去除一个该数, 为多重集中最小元素,\(
阅读全文
摘要:浅解 cdq 分治 cdq 分治用来解决一类可以独立计算贡献的问题。 比较经典的问题有:合法点对数,简单动态规划优化等。 cdq 的一般思想是:将当前处理的区间分成两半,左右区间内部的贡献递归处理,这层只处理左右区间之间的贡献。 如果单层处理的复杂度是
阅读全文
摘要:Powerful Number筛学习笔记 本文参考了 大佬,攀岩高手大佬和日居月诸大佬的博客。 筛是一类在亚线性复杂度内求出积性函数前缀和的算法。 定义 设正整数 \(\displaystyle
阅读全文
摘要:P8820 Solution link 考虑 ,这种情况是不会跳出链的,我们把链拉出来做一个 dp。这个显然可以动态 dp 维护,具体地: 设 表示跳到第 个点最小权值和,定义广义矩阵乘法 满足 则
阅读全文
摘要:P8512 Solution link 考虑对操作序列扫描线,每次求所有操作时间 的操作的和。 区间推平的话前面的操作是不影响后面的,于是维护一个 ODT,每个节点存一下插入的时间, 开一个 BIT 维护每个插入时间的段的和,插入一个段就单点加,删除一个段就单点减。查询就是求后缀
阅读全文
摘要:P7916 Solution link 建立平面图的对偶图,即:对于平面图的每个平面建立它代表的一个点。 对于两个平面,它们之间如果有接触边,则两个平面代表的点之间连一条边,边权为接触边的边权。 对于此题,抄个图: 每个红点都是平面代表的点,当然中间两个平面也应该有代表的点,但是因为两侧颜色不同所以
阅读全文
摘要:P7915 Solution link 考虑枚举第一个操作选 L 还是 R。这样原序列就被分为了两个栈,用四个指针 分别指向这两个栈的栈顶栈底。 感性理解一下,某一个栈的栈顶 可以被 pop 当且仅当某一个栈的栈底等于 。 于是直接 dfs,每次
阅读全文
摘要:P7914 Solution link 先考虑 Subtask 。设 表示长度为 的方案数,按题目定义转移: AB,ASB:\(\displaystyle dp_n\gets dp_n+\sum_{i=1}^{n-1}\sum_{j=0}^kdp_i\time
阅读全文
摘要:P7913 Solution link 先考虑有 个廊桥的分配。假设廊桥编号为 ,我们用两个堆 分别存当前空闲的廊桥编号和正在使用廊桥的飞机的离开时间。对于国内和国外的飞机分别做一次以下操作: 先按到达时间排序,从左到右扫,到第 架飞
阅读全文
摘要:P6588 Solution link 显然维护区间内的 还有两个要求的和,push_up 时多加上左右维护的前两个值瞎乘起来再瞎加减即可。
阅读全文
摘要:P4845 Solution link 考虑树形 dp,对于每个 直接钦定它的三种可能状态:有灯,没灯但是被其他灯照亮,没灯也没被照亮。 这样钦定会导致一些需要被照亮的点在当前子树中还未被照亮,需要依靠子树外的灯来照亮。称这种点为闲置点。 状态内只需要记录闲置点中最深的到子树根的距离,以
阅读全文
摘要:P4632 Solution link 对时间扫描线,就变成支持单点加入删除一个颜色点,求所有颜色距离某个点的距离最大值。 考虑二分答案,现在就是要检验 内是否有 颜色的点各至少一个。 数颜色可以考虑维护 表示上一个与该
阅读全文
摘要:P4555 Solution link 双回文串的左右两半部分显然是互相独立的。 于是考虑求出 表示以 结尾的最长回文子串长度, 表示以 开头的最长回文子串长度,最后扫一遍所有的分隔符求 的最大值即可。 考虑如何求 \(l
阅读全文
摘要:P4516 Solution link 树形dp。设 表示以 为根的子树内安装了 个设备,点 是否安装了设备,点 是否被监听时子树内除 都被监听的方案数。 注意到状态涉及到了设备的数量,转移的时候需要
阅读全文
摘要:P4449 Solution link \[\begin{aligned} \sum_{i=1}^n\sum_{j=1}^m\gcd(i,j)^k&=\sum_{d=1}^n\sum_{i=1}^n\sum_{j=1}^md^k[\gcd(i,j)=d]\\ &=\sum_{d=1}^n\sum_{
阅读全文
摘要:P4173 Solution link 对于一般的字符串匹配,我们可以用 FFT 在线性对数复杂度内解决。 对于这题,我们无法用常用的 KMP 算法解决。考虑对原先的 FFT 匹配算法进行一些修改。 原先 能够匹配 中以第 位结尾的 个字符当且仅当 \
阅读全文
摘要:P4137 Solution link 考虑建主席树:权值线段树的叶子维护这个权值最后出现的下标,push_up 的时候取 。 这样一个区间的 小于 意味着有一个权值最后出现的下标小于 ,也就是说 后面没有出现这个权值。 也就是说
阅读全文
摘要:P3768 Solution link \(\begin{aligned} \sum_{i=1}^n\sum_{j=1}^nij\gcd(i,j) &=\sum_{d=1}^n\sum_{i=1}^n\sum_{j=1}^nijd[\gcd(i,j)=d]\\ &=\sum_{d=1}^nd^3\s
阅读全文
摘要:P3761 Solution link 首先 枚举断边。考虑连接两棵树的哪两个点会最优: 设 表示 所在的树以 为根后根到叶子长度的最大值。那么显然就是连接两棵树中 最小的两个点。 \(maxl_
阅读全文
摘要:P3435 Solution link 画个图: 显然四个黄色部分是相等的。也就是说,黄色部分是 A 的一个 border。 根据题目,周期的长度也就是 Q 的长度,也就是 A 的长度减去它的某个 border 的长度。 现在要求这个最大,由于 A 的长度固定,要求的也就是 A 的最小 border
阅读全文
摘要:P3263 Solution link 求 。 首先看到这个式子的形式,我们先把向下取整扔掉,研究里
阅读全文
摘要:P3214 Solution link 为了方便,我们求有序的答案最后再除掉 。 题目的限制包括: 每种元素总共出现偶数次 不存在相同的两个集合 没有空集 考虑偶数的限制,你发现每个集合中元素出现次数要么 要么 。 于是如果你确定了前 个集合,最后一
阅读全文
摘要:P2704 Solution link 很显然是状压dp。设 表示第 行和第 行拼起来的状态为 ,则每次枚举这一行的状态,检验是否符合地图限制、是否与上一行无交即可。 为了防止爆空间和 TLE,一开始可以先预处理一行的合法状态和两行的合
阅读全文
摘要:P2352 Solution link 扫描线即可。
阅读全文
摘要:P2150 Solution link 首先两人选的数两两互质相当于两人的质因数集合无交。 先考虑 :由于 内的质因只有 个,我们考虑状压 。 设 表示考虑到第 个数,G 选了质因数集合 \(
阅读全文
摘要:P1850 Solution link 看到最小期望值,考虑dp。 由于点的数量小于 ,我们可以先用 Floyd 预处理出两点之间的最短路。 设 表示前 间教室申请了 间,第 间教室是否申请的最小期望长度。 下面设
阅读全文