上一页 1 ··· 6 7 8 9 10 11 下一页
摘要: 1.概述 分块,被称为优雅的暴力,实质上分块就是一种暴力算法。但是分块因其优美性与可扩展性,使得很多题目往往用分块做更简洁。而分块的最重要的一句话就是:大块维护,小块朴素。 分块被称为暴力是因为其时间复杂度是 \(O(n\sqrt n)\) ,如果卡常不当就可能会被卡掉,或者直接卡成 \(O(n^2 阅读全文
posted @ 2022-04-13 21:41 Plozia 阅读(222) 评论(0) 推荐(0) 编辑
摘要: 回顾: 一个莫队,六种方法(普通莫队、带修莫队、树上莫队、树上带修莫队、回滚莫队/不删除莫队、莫队二次离线/第十四分块(前体)),连续写了三篇博文来讲述。本篇博文是最后一篇,将会讲述最后两种莫队:回滚莫队/不删除莫队 [莫队二次离线/第十四分快(前体)],同时将会总结六种莫队算法。 3.练习题 题单 阅读全文
posted @ 2022-04-13 21:34 Plozia 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 回顾: 上回我们在数据结构专题-学习笔记:莫队#1(普通莫队)讲解了莫队的一般套路以及各种优化方式,但那只是基础,接下来将会介绍莫队更多的用法。这篇博文将会讲述 带修莫队、树上莫队、树上带修莫队 的用法,在数据结构专题-学习笔记:莫队#3(回滚莫队,莫队二次离线) 中将会讲述 回滚莫队/不删除莫队、 阅读全文
posted @ 2022-04-13 21:33 Plozia 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 1.概述 莫队算法,是由莫涛队长提出的一种,能够以玄学的复杂度来处理区间查询类的问题。 甲:区间查询类的问题不是可以用线段树等数据结构解决的吗? 乙:那如果要求某个区间的区间众数要怎么办呢?不准使用分块。 甲:啊这。。。。。。 所以,莫队算法就是用来解决这种线段树等数据结构不好维护的区间查询问题。 阅读全文
posted @ 2022-04-13 21:32 Plozia 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 这道题我调了好久......细节非常多。 首先,看完题目后,可以发现这是一道博弈问题。 那么接下来,我们假设最强蛇为 \(x\) ,最弱蛇为 \(y\) ,那么这里就有两个结论: 如果 \(x\) 吃了 \(y\) 不是最弱的蛇,则 \(x\) 必吃 \(y\) 。 证明:假设当前第二强的蛇为 \( 阅读全文
posted @ 2022-04-12 21:43 Plozia 阅读(98) 评论(0) 推荐(0) 编辑
摘要: 这道题是一道构造题,很有 CF 的风格。 首先,观察 \(x,y \leq 10^6\) ,不难想到一个思路:排序, \(x\) 为第一关键字, \(y\) 为第二关键字。但显然这样是错的。因为我们只要构造一组跨度足够大的数据,就可以把这个做法卡掉。 但是,排序 的思路是值得我们探讨的,只是如何排序 阅读全文
posted @ 2022-04-12 21:43 Plozia 阅读(48) 评论(0) 推荐(0) 编辑
摘要: 这道题可以说是一道树上带修莫队的板子题。虽然评级是黑的,但是树上带修莫队本身还是比较好想的。就是代码很难调。 update 2021/4/12:现在评级掉紫了。 树上莫队: 树上莫队的本质就是利用欧拉序将树上莫队问题变成序列莫队问题。 我们设 \(\{eular\}\) 表示欧拉序序列, \(fir 阅读全文
posted @ 2022-04-12 21:43 Plozia 阅读(55) 评论(0) 推荐(0) 编辑
摘要: 1.概述 并查集是一种数据结构,用于图论之中(更多时候用于树),通常用来维护一张无向图内 \(O(1)\) 判断两个点是否在同一个连通块内,有很多的用法,扩展性也比较高。 2.模板 下面还是通过一道模板讲解并查集的用法。 link 我们假设这 4 个元素分别表示 4 个人。假设每个人都会在一个群内, 阅读全文
posted @ 2022-04-12 21:42 Plozia 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 这道题首先可以发现,宽度是完全没有用处的,所以可以忽略不计。 然后在贴海报时,可以发现:如果某一个点与前面某一个点相同,而且这两个点中间没有比他们低的点,那么可以节省一张海报。 啥意思?比如说: 1 4 2 1 2 3 处理时,由于两个 1 中间没有比 1 低的,那么他们可以共享一张海报(使用公共边 阅读全文
posted @ 2022-04-12 21:41 Plozia 阅读(54) 评论(0) 推荐(0) 编辑
摘要: 1.概述 单调栈,是一种数据结构,与单调队列相似。 单调队列使用双端队列维护,队列内元素单调递增或单调递减。 单调栈则使用普通的栈维护,栈内元素单调递增或单调递减。 接下来,通过一道例题,来看一下单调栈的基本操作。 2.模板 link 作为模板题,我将会详细讲解单调栈的用法。 单调栈其实类似于单调队 阅读全文
posted @ 2022-04-12 21:41 Plozia 阅读(38) 评论(0) 推荐(0) 编辑
摘要: 题目链接:link 初步分析: 这道题首先不会是贪心 (其实是我不会) ,看到“最大”二字,又看了眼数据范围,基本上可以定下来是 dp 题了。 首先设状态: \(f[i][j]\) 表示第 \(i\) 个烟花放出时当前人在 \(j\) 位置可以得到的最大开心值。 然后推方程:\(f[i][j]=\m 阅读全文
posted @ 2022-04-12 21:40 Plozia 阅读(28) 评论(0) 推荐(0) 编辑
摘要: 本题题意简单明了。 首先,题目当中 最小 二字,就是在提示我们使用二分。 然后,要求最大值与最小值的差,并且区间长度固定,各位能想到什么?我想到的是使用单调队列维护。 做法: 首先对输入数组按照 \(x\) 坐标升序排序。 然后二分花盆长度,跑一次单调队列即可。 所以结束了?代码: #include 阅读全文
posted @ 2022-04-12 21:39 Plozia 阅读(63) 评论(0) 推荐(0) 编辑
摘要: 一些 update update 2021/2/28:修改了『概述』部分。 1.概述 单调队列是一种特殊的队列,其保证队列内的元素单调递增。 而单调队列通常解决的是这样一类问题: 有 \(n\) 个数,给定长度 \(len\),求所有区间 \([k,k+len](k+len \leq n,k \in 阅读全文
posted @ 2022-04-12 21:39 Plozia 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 为什么大家都是dp啊,我只会写记忆化搜索。。。 题目简洁明了,考场上看完这道题后我想到了这道题: \(n * m\) 的网格中,小熊从左上角走到右下角,只能向右或向下走,每个格子有权值 \(a_{i,j}\),求出一条路径使路上权值和最大。(大家应该都做过) 转移方程 (我竟然用了dp) :\(f_ 阅读全文
posted @ 2022-04-12 21:37 Plozia 阅读(253) 评论(0) 推荐(0) 编辑
摘要: 这道题题意简单明了,很明显 Marmot 只有两种吃法: 一次吃 1 个 一次吃 \(k\) 个 因此,这道题是一道序列性动态规划。 到这里,我们有两种方法:记忆化搜索与动态规划。 这两种方法的计算式子是一样的:令 \(f_i\) 表示吃 \(i\) 块蛋糕所用的方案数,则: \(f_i=f_{i- 阅读全文
posted @ 2022-04-12 21:36 Plozia 阅读(25) 评论(0) 推荐(0) 编辑
摘要: 1. 前言 树上最近公共祖先(LCA),是一种图论算法,可以快速得到 有根树 中任意两个节点的最近公共祖先。 目前作者已经了解并且学会的有两种写法: 倍增写法求 LCA。 这种写法是最便于新手理解的,也是入门写法。 前置知识:树的基础知识(存储,DFS 遍历),然后只需要学过一小点递推思维即可。当然 阅读全文
posted @ 2022-04-12 21:36 Plozia 阅读(105) 评论(0) 推荐(0) 编辑
摘要: 这道题有一点数学的味道,思路想清楚,代码其实并不难写。 由题意,满足条件的三元组 \((x,y,z)\) 必须满足 \(y-x=z-y\) ,变形可得 \(x+z=2y\) ,又因为 \(x,y,z\) 都是整数,所以 \(x,z\) 同奇偶。又因为 \(color_x=color_z\) ,统计答 阅读全文
posted @ 2022-04-12 21:31 Plozia 阅读(12) 评论(0) 推荐(0) 编辑
摘要: 原题传送门 不愧是 2009 Noip tg T4 ,连续打了4天的代码,吸了口氧才通过。 前置知识: 对于一道数独题,我们可以先预处理出每一行0的个数,然后从个数最少的行开始做,这样可以节省大量的时间(因为这些格子可以填的数字少)。 对于本题,我一开始的思路是:仿照前置知识预处理,分数进行打表,存 阅读全文
posted @ 2022-04-12 21:30 Plozia 阅读(45) 评论(0) 推荐(0) 编辑
摘要: update 2021/1/19: 原题解部分 Markdown 和 Latex 炸了,现在已经修复。 对题解当中一些表述不明的句子做了进一步的阐述。 更换了码风。 首先,看到这道题在普及组 T3 的位置,我们知道只能是 搜索/图论/DP 三者之一。 再结合数据范围我们就可以 根据个人经验 分析出这 阅读全文
posted @ 2022-04-12 21:30 Plozia 阅读(86) 评论(0) 推荐(0) 编辑
摘要: 前置知识:最小生成树算法(Kruskal/Prim) 例题 算法分析: 这一道题中给出一个无向图,求从任意一点开始经过每一点的最短路径。 既然要经过每一个点,还要求最短路径,算法就是最小生成树了。 我用的是 Kruskal 算法。 有一点需要注意:每条路的长度需要如何计算? 约翰需要经过每一条道路两 阅读全文
posted @ 2022-04-12 21:29 Plozia 阅读(31) 评论(0) 推荐(0) 编辑
上一页 1 ··· 6 7 8 9 10 11 下一页