摘要: [题解]UVA10902 Pick-up Sticks UVA10902 Pick-up Sticks 题意简述 多测。给定坐标系上依次给定\(n\)根木棍的起始和终止坐标,按顺序放置这些木棍,询问最终处在最上层的木棍有哪些。 \(n\le 100000\)。保证任意时刻最上层的木棍不超过\(1000\)个。 思路分析 看起来数据范围很刁钻,不过除了暴力 阅读全文
posted @ 2024-07-16 09:20 Sinktank 阅读(57) 评论(0) 推荐(0)
摘要: [笔记]快速傅里叶变换(FFT) 模板题:P3803 【模板】多项式乘法(FFT) 快速傅里叶变换(Fast Fourier Transform,FFT)在算法竞赛中主要用于求卷积,或者说多项式乘法。如果我们枚举两数的各系数相乘,时间复杂度是\(O(n^2)\),而FFT可以将这一过程优化到\(O(n\log n)\)。 流程 整个 阅读全文
posted @ 2024-07-15 11:08 Sinktank 阅读(214) 评论(0) 推荐(0)
摘要: [题解]细胞自动机 给定一个长度为\(n\)的\(01\)串\(s\),用于表示一个环上的细胞的初始状态,其中第\(1\)个细胞与第\(2\)个、第\(n\)个细胞相邻;第\(n\)个细胞与第\(1\)个和第\(n-1\)个相邻。\(0\)表示细胞死亡,\(1\)表示细胞存活。接下来给定\(t\)轮操作,每一轮操作,根 阅读全文
posted @ 2024-07-06 22:15 Sinktank 阅读(56) 评论(0) 推荐(0)
摘要: [题解]逃离地球 题意简述 有一个星系,共有\(n*m\)个星球,排成\(n\)行\(m\)列。 初始星球之间没有道路。接下来给定\(P\)种魔法\(1\),\(Q\)种魔法\(2\): 魔法\(1\):第\(i\)种魔法用\(a_i,b_i,c_i\)描述。表示你可以任选星系的一行,在第\(a_i\)和第\(b_i 阅读全文
posted @ 2024-07-05 09:15 Sinktank 阅读(59) 评论(0) 推荐(0)
摘要: [题解]P1083 [NOIP2012 提高组] 借教室 [题解]P1083 [NOIP2012 提高组] 借教室 解法\(1\):线段树 - \(O((n+m)\log n)\) 比较直观的一种做法,但是可能需要卡一下输入(这里没卡也过了,但要注意输入是\(10^6\)级的,为了保险一定要加)。 #include<bits/stdc++.h> #defi 阅读全文
posted @ 2024-07-04 22:30 Sinktank 阅读(189) 评论(0) 推荐(0)
摘要: [题解]P2042 [NOI2005] 维护数列 - Splay解法 P2042 [NOI2005] 维护数列 一道思路不难,但实现细节很多的平衡树题,调了一天半终于做出来了w。 对于初始序列,我们可以直接构建一条链(毕竟一个一个调用插入函数也可能形成一条链)。题解有递归直接构建成一棵严格平衡的二叉树的,这样也可以,常数可能会小一点。 其中区间反转就是裸的文艺平衡树( 阅读全文
posted @ 2024-06-23 20:46 Sinktank 阅读(57) 评论(0) 推荐(0)
摘要: [题解]P3391 文艺平衡树 - Splay解法 P3391 【模板】文艺平衡树 给定序列\(1,2,\dots,n\),接下来\(m\)次操作,每次操作给定\(l,r\),你需要翻转\([l,r]\)。 所有操作结束后,请输出这个序列。 我们先从“普通平衡树”这一题出发,思考一下Splay操作的本质。 我们把一个节点Splay到根节点后,中序遍历 阅读全文
posted @ 2024-06-20 18:39 Sinktank 阅读(123) 评论(0) 推荐(0)
摘要: [笔记]Splay树 前置知识:树的左旋、右旋。 Splay树是一种平衡树。能够做到每个操作均摊\(O(\log N)\)。 前言 与上文AVL树不同之处在于,AVL树在任何操作结束后,都能保证每个节点的左右子树高度相差不超过\(1\)。相应地,每个操作都是严格的\(O(\log N)\)。而Splay树并没有对“平衡” 阅读全文
posted @ 2024-06-20 11:36 Sinktank 阅读(209) 评论(0) 推荐(1)
摘要: [笔记]AVL树 AVL树是一种严格平衡的二叉搜索树,任何操作结束后,都能保证每个节点的左右子树高度相差不超过\(1\)。 内容源自BV1rt411j7Ff - 【AgOHの数据结构】平衡树专题之叁 树旋转与AVL树。 模板题:P3369 【模板】普通平衡树。 结构体定义 & 基本函数 struct node{ in 阅读全文
posted @ 2024-06-16 15:48 Sinktank 阅读(91) 评论(0) 推荐(0)
摘要: [题解]ABC358E Alphabet Tiles AtCoder ~ E - Alphabet Tiles Luogu ~ ABC358E Alphabet Tiles 题意简述 给定正整数 \(K\) 和 \(C_1,C_2,\dots,C_{26}\)。请求出长度在 \(1\) 到 \(K\) 之间,满足下列条件的字符串个数(取模 \(9982 阅读全文
posted @ 2024-06-16 11:56 Sinktank 阅读(113) 评论(0) 推荐(1)
摘要: [题解]P9432 [NAPC-#1] rStage5 - Hard Conveyors P9432 [NAPC-#1] rStage5 - Hard Conveyors 题意简述 给定一个\(N\)个节点的树形结构,其中有\(k\)个关键节点。 接下来有\(q\)次询问,每次询问给定\(x,y\),请输出\(x\)到\(y\)至少经过一个关键点的最短路径。 解题思路 我们发现,这道题相 阅读全文
posted @ 2024-06-10 20:11 Sinktank 阅读(41) 评论(0) 推荐(0)
摘要: [题解]P9433 [NAPC-#1] Stage5 - Conveyors P9433 [NAPC-#1] Stage5 - Conveyors 题意简述 给定一个\(N\)个节点的树形结构,每条边有边权,树上有\(k\)个关键点。 接下来有\(q\)次询问,每次询问给定\(x,y\)两点,请计算从\(x\)开始经过这\(k\)个关键点(可以重复经过)再到\(y\)的最短路 阅读全文
posted @ 2024-06-10 19:06 Sinktank 阅读(34) 评论(0) 推荐(0)
摘要: [题解]P1967 [NOIP2013 提高组] 货车运输 P1967 [NOIP2013 提高组] 货车运输 题意简述 给定一个\(N\)个节点,\(M\)条边的无向图,其中每条边有一个边权。 接下来给定\(q\)次询问。每次询问给出\(x,y\),请计算\(x\)到\(y\)路径上最小边权的最大值是多少。 解题思路 我们对于每个连通块跑一遍最大生成树。这 阅读全文
posted @ 2024-06-09 15:52 Sinktank 阅读(53) 评论(0) 推荐(0)
摘要: [题解]P3398 仓鼠找 sugar P3398 仓鼠找 sugar 题意简述 给定一个\(N\)个节点的树形结构。接下来有\(q\)次询问,每次询问给定\(4\)个节点\(a,b,c,d\),请计算\(a\)到\(b\)的简单路径和\(c\)到\(d\)的简单路径是否有相交的节点。对于每个询问,输出Y/N表示答案。 解题思路 & Co 阅读全文
posted @ 2024-06-09 13:13 Sinktank 阅读(51) 评论(0) 推荐(0)
摘要: [题解]P6374 「StOI-1」树上询问 P6374 「StOI-1」树上询问 题意简述 给定一个\(N\)个节点的树,接下来有\(q\)次询问。每次询问给定\(a,b,c\),请问存在多少个节点\(i\),使得这棵树在以\(i\)为根的情况下,\(a\)和\(b\)的LCA是\(c\)。 解题思路 & Code 首先通过分析样例,我们发现 阅读全文
posted @ 2024-06-08 23:42 Sinktank 阅读(105) 评论(0) 推荐(0)
摘要: [题解]UVA11235 Frequent values UVA11235 Frequent values 没看到多测调了半天 每组数据给定\(n,q\)。接下来给出一个长度为\(n\)的不降序列\(A\)。接下来\(q\)次询问,每次询问给定\(l,r\),求\(A_{l\sim r}\)中出现最多的那个数出现了多少次。 \(1\le n,q \le 1 阅读全文
posted @ 2024-06-02 14:13 Sinktank 阅读(43) 评论(0) 推荐(0)
摘要: [题解]P4381 [IOI2008] Island——基环树直径 P4381 [IOI2008] Island 题意:给定一个基环树森林,求每个基环树的直径之和。 我们发现,一棵基环树的直径只有下面两种情况: 环上的某一点作为根的子树的直径。 环上有两点,每个点引出一条链,然后再将这两点相连。 对于第一种情况,我们仅需用树形dp的方法求出每个子树的直径(见OI W 阅读全文
posted @ 2024-06-02 12:09 Sinktank 阅读(185) 评论(0) 推荐(1)
摘要: [笔记]树形dp - 2/4(树上背包类) 树上背包是树形dp的常见模型,通常是分组背包的变形,而分组背包的本质就是多个泛化物品不断相加。因此掌握泛化物品的合并的方法有助于理解转移的过程(具体见1.4)。 此类问题一般也可以用DFS序、多叉转二叉等方法解决。 引入:二叉苹果树 P2015 二叉苹果树 题意简述:在一个二叉树中,每个边有一个权值 阅读全文
posted @ 2024-05-12 17:36 Sinktank 阅读(1628) 评论(7) 推荐(3)
摘要: [笔记]拓扑排序 对于一个有向无环图(DAG)的顶点按顺序排成一个序列的过程,就是拓扑排序(Topological Sort)。 具体来说,这个序列必须满足: 每个顶点正好出现\(1\)次。 如果图上存在一条\(A\to B\)的路径,那么\(A\)一定在\(B\)之前。 注意:拓扑排序结果可能不唯一。 注意与DFS 阅读全文
posted @ 2024-05-08 23:07 Sinktank 阅读(81) 评论(0) 推荐(1)
摘要: [题解]CF1907G Lights CF1907G Lights 我们可以把灯抽象成节点,而开关抽象成无向边(重边算作\(1\)条)。 显然每个连通块要么是一棵树,要么是一棵基环树。 对于基环树,我们把它看做若干棵树处理,最后我们再考虑如何处理环。 如下图,这是一棵树,黄色的点表示亮灯。 我们选定任意一条边,可以改变子节点和父节点的状 阅读全文
posted @ 2024-05-08 23:06 Sinktank 阅读(39) 评论(0) 推荐(1)
摘要: [笔记]分组背包 于 2024/11/25 修改分类 题解 \(\Longrightarrow\) 笔记。 P1757 通天之分组背包 分组背包模板题。 总共\(s\)组,每组最多取一个物品,实际上就是一个物品总数为\(s\)的背包。 for(int i=1;i<=s;i++){//枚举组 for(int j=1;j 阅读全文
posted @ 2024-05-06 21:55 Sinktank 阅读(265) 评论(0) 推荐(2)
摘要: [笔记]树形dp - 1/4(节点选择类) 树形dp,是一种建立在树形结构上的dp,因此dfs一般是实现它的通用手段。 是一种很美的动态规划呢。 P1352 没有上司的舞会 P1352 没有上司的舞会。 在一棵树中,找到若干个互相独立(即互相没有边直接相连)的点,使它们的权值和最大。 我们发现,间隔选择的方法(只选深度为奇数/偶数的点)是不可 阅读全文
posted @ 2024-05-04 10:59 Sinktank 阅读(139) 评论(0) 推荐(2)
摘要: [题解]ABC337E Bad Juice ABC337E Bad Juice 一开始的想法如下: 就是利用二分法,对于一个区间\([l,r]\),分成\([l,mid-1],[mid,r-1]\)两部分,各找两个朋友喝,右边还空出一个\(r\),如果前面两个朋友都没中毒,那说明\(r\)这瓶有毒。 但仔细一想,我们发现\([1,n)\)的瓶 阅读全文
posted @ 2024-05-03 11:19 Sinktank 阅读(33) 评论(0) 推荐(1)
摘要: [题解]P4597 序列 sequence P4597 序列 sequence 是CF13C Sequence的加强版,\(N\leq 5*10^5\)。 如果想了解\(O(N^2)\)的DP解法请看此文。 给定\(N\)个数,每次操作可以选其中一个数\(+1\)或\(-1\)。请问要让这个数列不降,最少需要多少次操作? 看到数据范围发现不能 阅读全文
posted @ 2024-05-01 17:32 Sinktank 阅读(70) 评论(0) 推荐(2)
摘要: [题解]CF13C Sequence CF13C Sequence 给定\(N\)个数,每次操作可以选其中一个数\(+1\)或\(-1\)。请问要让这个数列不降,最少需要多少次操作? 我们用DP解决。 对\(a\)从小到大排序,存在\(c\)中。 我们用\(f[i][j]\)表示让前\(i\)个元素满足条件,而且这些元素最大值不超过\( 阅读全文
posted @ 2024-05-01 17:22 Sinktank 阅读(45) 评论(0) 推荐(1)
摘要: [题解]ABC351 D~F D - Grid and Magnet 终于找到为什么WA 4个点了。今天回来又交了几遍发现WA的数量不稳定,除了4个还有5个。所以猜测是没有初始化的问题,一番检查发现是存地图的\(s\)数组,第\(0\)行没有初始化。之前做题没有遇到过特别访问第\(0\)行的,所以写代码时就粗枝大叶、一笔略过了。 阅读全文
posted @ 2024-04-28 23:00 Sinktank 阅读(100) 评论(0) 推荐(0)
摘要: [题解]P2015 二叉苹果树 P2015 二叉苹果树 树形dp,一般用dfs辅助解决。 当我们搜索到\(u\),此时剩下\(cnt\)条边可以用,也就是说\(u\)为根节点的子树最多可以保留\(cnt\)条边。 由于上一层的需求,我们显然需要枚举剩余边数\(i\)(\(1\leq i\leq cnt\))。接下来对于每个\(i\ 阅读全文
posted @ 2024-04-27 17:01 Sinktank 阅读(125) 评论(0) 推荐(0)
摘要: [题解]P5656 【模板】二元一次不定方程 (exgcd) P5656 【模板】二元一次不定方程 (exgcd) 若存在\(ax+by=c\),则可以根据特解\(x,y\)求出任意通解\(x',y'\): \(\begin{cases} x'=x+k*\frac{b}{\gcd(a,b)}\\ y'=y-k*\frac{a}{\gcd(a,b)} \end{ 阅读全文
posted @ 2024-04-25 22:08 Sinktank 阅读(345) 评论(0) 推荐(1)
摘要: [题解]CF61E Enemy is weak CF61E Enemy is weak 如下图,第\(i\)行\(j\)列表示第\(j\)个数结尾,向前长度为\(i\)的逆序子序列个数。 递推方式见下图。 第一行全为\(1\)。 要填第\(2\)行的值,就往前找所有\(>\)当前元素的位置,把它们第\(1\)行的值加起来。 要填第\(3\)行的值 阅读全文
posted @ 2024-04-25 19:26 Sinktank 阅读(29) 评论(0) 推荐(0)
摘要: [题解]P5431 【模板】模意义下的乘法逆元 2 可恶,卡常好难受。 P5431 【模板】模意义下的乘法逆元 2 将分数通分,第\(i\)个分数是\(\frac{k^i*fac\div a[i]}{fac}\),\(fac\)表示所有元素的积。 我们可以用\(lr,rl\)记录\(a\)的前缀后缀积,第\(i\)个分数就是\(\frac{k^i*l 阅读全文
posted @ 2024-04-24 21:35 Sinktank 阅读(89) 评论(0) 推荐(1)
★CLICK FOR MORE INFO★ TOP-BOTTOM-THEME
Enable/Disable Transition
Copyright © 2023 ~ 2025 Sinktank - 1328312655@qq.com
Illustration from 稲葉曇『リレイアウター/Relayouter/中继输出者』,by ぬくぬくにぎりめし.