06 2021 档案

该文被密码保护。
posted @ 2021-06-29 18:38 Maplisky 阅读(7) 评论(0) 推荐(0)
摘要:传送门,是划水时口胡的一道大水题 前置知识: 可持久化线段树。 题意: 给出一个长度为 \(n\) 的数列 \(a_i\)。 \(m\) 次在线询问,每次询问求出 \(\sum\limits_{i=l}^{r-1}|x-a_i|\times|x-a_{i+1}|\)。 \(n,m\le3\times 阅读全文
posted @ 2021-06-28 16:34 Maplisky 阅读(82) 评论(0) 推荐(1)
摘要:题目传送门 ##算法分析:二分 提供一种基于二分的算法。 注意一下坑点: 最低那一列就是正中间那一列。 “最低的列左右两侧的砖头数量必须相同”指的不是与中间列相邻的两列,而是所有对应的列。 下面来分析一下如何二分。 这里二分不直接二分答案。如果直接二分答案,并没有把原问题变成更简单的子问题。而二分的 阅读全文
posted @ 2021-06-27 16:52 Maplisky 阅读(108) 评论(0) 推荐(0)
摘要:题目传送门 ##算法分析:线性 dp 应该来说是比较明显的线性 dp,关键在于如何设计状态及转移方程。 在本题中涉及两种“题目”,即仅能被视为一个难度的“题目”和能被视为有两个连续难度的“题目”。作为两种不同的情况,一维的 dp 明显是不够的,需要加入第二维。 为了表述方便,下文称“仅能被视为一个难 阅读全文
posted @ 2021-06-27 16:20 Maplisky 阅读(80) 评论(0) 推荐(0)
摘要:题解 P6873 [COCI2013-2014#6] FONT题目传送门 实话说,别想太多,就能速切本题。 ##算法分析:记忆化搜索 第一眼看到可能会想到状压 dp,但事实上没那么复杂。如果要状压的话,状态数有 \(N\times 2^{26}=6710886400\) 种,显然在时空上均无法接受。 考虑记忆化搜索。简单地,用 map 记录状态。由于顺序无关, 阅读全文
posted @ 2021-06-27 15:28 Maplisky 阅读(76) 评论(0) 推荐(0)
摘要:题目传送门 这道题主要还是考一个想法。 ##算法分析:逆序操作+并查集 首先考虑按照题意模拟整个过程。单次 PAINT 指令时间复杂度为 \(\mathcal{O}(n^2)\),一共有 \(M\) 个指令,总复杂度为 \(\mathcal{O}(n^2M)\),显然不能承受。期间有 SAVE 指令 阅读全文
posted @ 2021-06-27 14:56 Maplisky 阅读(118) 评论(1) 推荐(1)
摘要:题目传送门 ##算法分析:尺取 看到本题,有些同学可能会想到二分。但实际上,答案并不满足单调性。为了叙述方便,以下称区间 \(i \to i+k-1\) 为左区间,区间 \(i+k \to i+2\times k-1\) 为右区间。在 \(k\) 增大时,左区间的值的确满足单调性,但右区间的值有减有 阅读全文
posted @ 2021-06-27 13:39 Maplisky 阅读(69) 评论(0) 推荐(0)
摘要:题目传送门 ##算法分析:记忆化搜索 一道水题。 建议难度:黄。 首先利用栈进行括号匹配,遇到左括号入栈,遇到右括号则把栈顶弹出并记录。不多说,代码如下: inline void cot() { stack<int> s; F(i,1,n) { if(c[i]=='(')s.push(i); if( 阅读全文
posted @ 2021-06-25 22:11 Maplisky 阅读(116) 评论(0) 推荐(0)
摘要:题目传送门 简单写一写好了,其实挺板的。 题目涉及区间拆解和合并,显然是一个区间 Dp。每次将一个区间分成左右两部分,并加上额外的收益。于是得出方程: \(dp_{l,r}=\max\{(a_l+a_r)\times a_j+dp_{l,j}+dp_{j+1,r}\}\) 解释一下: \((a_l+ 阅读全文
posted @ 2021-06-25 16:47 Maplisky 阅读(81) 评论(0) 推荐(0)
摘要:题目传送门 ##算法分析:二分+前缀和 答案的二分性是比较明显的,关注 “最大值”“最小值” 就可以看出来。因此最外层二分答案。 为了表述方便,记最大的颜色参数为 \(col\)。 注意到 \(0\le R_x,G_x,B_x\le256\),范围较小,在没有思路的情况下可以直接 \(col^3\) 阅读全文
posted @ 2021-06-25 15:41 Maplisky 阅读(93) 评论(0) 推荐(1)
摘要:题目传送门 ##题意简述 老师带学生出去旅游,老师想要尽可能的避免学生谈恋爱,又想尽可能的带学生出去, 四种情况满足任意种都不会谈恋爱: 1.身高差超过40厘米 2.性别一样 3.音乐风格不一样 4.爱好的运动一样 现在老师想知道他最多能带多少学生。 ##算法分析:二分图最大独立集 显然,所有的学生 阅读全文
posted @ 2021-06-23 16:07 Maplisky 阅读(50) 评论(0) 推荐(0)
摘要:题目传送门 ##算法分析:Trie 树 题目中唯一的运算是按位异或,我们可以考虑按位异或的本质。既然是一位一位异或,那么我们直接把 \(x\) 转化成一个二进制数不就好了吗? 在插入时,我们可以先将 \(x\) 转化为一个32位二进制数,然后从高位到低位插入 Trie 树,并对每个树上每个节点 \( 阅读全文
posted @ 2021-06-23 16:00 Maplisky 阅读(47) 评论(0) 推荐(0)
摘要:题目传送门 ##算法分析:DAG 最小路径点覆盖 我们考虑建图来表示题中所示的关系。当一辆出租车结束当前任务并且能够在下一个任务开始前赶到目的地,我们就认为这两个任务是可能被同一辆出租车完成的,因此我们在这前一个任务到后一个任务之间连一条有向边,表示连续完成的关系。那么,用尽可能少的出租车完成这些任 阅读全文
posted @ 2021-06-23 15:56 Maplisky 阅读(52) 评论(0) 推荐(0)
摘要:题目传送门 ##算法分析:二分答案+二分图判定 首先分析题目大意。很显然,按照题意将塔分为两组后,同组内没有其他联系,于是我们可以想到二分图基本模型。题设的条件就是要求我们将若干座塔构造成一个二分图。于是将题意简化如下: 求一张二分图,使得每组内两个点之间的曼哈顿距离的最大值最小,并求出符合条件的方 阅读全文
posted @ 2021-06-23 15:48 Maplisky 阅读(78) 评论(0) 推荐(0)
摘要:传送门 这里提供一种比较暴力的做法。 ##算法分析:离散化+区间覆盖。 根据题意,Farmer John 能看到奶牛的时候奶牛恰好经过 \(y\) 轴。显然,奶牛身体某部位在 \(y\) 轴的时间是一个区间,可以考虑对时间轴进行区间覆盖,即将时间轴上 \(st_i\) 到 \(ed_i\) 这一段区 阅读全文
posted @ 2021-06-23 14:07 Maplisky 阅读(63) 评论(0) 推荐(0)
摘要:题目传送门 算法:数位 \(dp\) 不熟悉数位 \(dp\) 的同学可以看一下洛谷日报第 84 期 “求出在给定区间 \([A,B]\) 内,符合条件 \(f(i)\) 的数 \(i\) 的个数。条件 \(f(i)\) 一般与数的大小无关,而与数的组成有关。”根据日报中给出的数位 \(dp\) 的 阅读全文
posted @ 2021-06-23 13:58 Maplisky 阅读(62) 评论(0) 推荐(1)
摘要:题目传送门 双倍经验! 不扯闲话了 进入正题 伟大的 \(cpp\) 告诉我们,拿到题目一定要看一眼数据范围。于是我们先来看一下点数和边数。发现$n\le10^3$ ,\(m\le10^4\),基本就是一个稠密图,而且点数不多,于是我们可以选择使用邻接矩阵来存图。 然后来考虑 \(Luka\) 应该 阅读全文
posted @ 2021-06-23 13:57 Maplisky 阅读(63) 评论(0) 推荐(0)
摘要:UVA589 Pushing Boxes 为什么题解里都是建图或者奇妙的双 BFS ?明明一个 BFS 就可以解决了嘛。 注意题意: 把推的数量减到最少(一般的 BFS 中距离是第一关键字,但是本题中推的数量才是第一关键字)。 如果有不止一个这样的序列,那么选择一个最小化总移动次数(步行和推送)的序 阅读全文
posted @ 2021-06-23 13:52 Maplisky 阅读(109) 评论(0) 推荐(0)
摘要:题目传送门 样例真的水爆了。 进入正题 题目中要求每次从一个点向相连的点扩散,这是不是和洪水填充很像?于是想到最短路。 可是乍一看好像和最短路没什么关系啊,于是我们来看样例。 样例虽然水,但有一点值得关注:奇偶性。 观察样例,当从 \(1\) 出发时,如果 \(L\) 为奇数,那么就是 \(No\) 阅读全文
posted @ 2021-06-23 13:44 Maplisky 阅读(701) 评论(0) 推荐(0)
摘要:题目传送门 做到这个题的时候人都傻了,被鹏哥批了一顿后,直接大叫:“ \(woc!\) ,这不就一完全背包吗!” 好吧,让我们看看这个题怎么和背包扯上关系的。 进入正题 第一眼,嗯,dp。 想了一会以后发现想不出来,好吧,看一下部分分。 \(T=1\) ,直接就是 \(m\) ,没什么用(蹭点分还是 阅读全文
posted @ 2021-06-23 13:35 Maplisky 阅读(794) 评论(0) 推荐(0)
摘要:题目传送门 不扯闲话了 ##进入正题 伟大的 \(cpp\) 告诉我们,拿到题目一定要看一眼数据范围。于是我们先来看一下点数和边数。发现$n\le10^3$ ,\(m\le10^4\),基本就是一个稠密图,而且点数不多,于是我们可以选择使用邻接矩阵来存图。 然后来考虑 \(Luka\) 应该怎么走。 阅读全文
posted @ 2021-06-23 13:34 Maplisky 阅读(80) 评论(0) 推荐(0)
摘要:题目传送门 ##算法:超级源点 + 两次 BFS 对于这一类走迷宫的题, BFS 是十分常见的手法。(推荐一道题:UVA589 Pushing Boxes) 在本题中,如果水和潘特“同时行动”,并不容易处理。因此可以先对洪水进行 BFS,标记洪水第一次弥漫到的时间,然后再对潘特进行 BFS,如果潘特 阅读全文
posted @ 2021-06-23 13:32 Maplisky 阅读(58) 评论(0) 推荐(0)
摘要:题目传送门 ##算法分析:BFS 显然是爆搜题(虽然不知道为什么有 dp 标签)(雾)。 首先是状态,我们应该记录两只企鹅的位置和走到当前状态所需的步数,如果走过这个状态,那么不再重复走。 struct P { int x,y,a,b,step;//位置,步数 }g,m; 其次是对状态的可行性检查。 阅读全文
posted @ 2021-06-23 13:29 Maplisky 阅读(67) 评论(0) 推荐(0)
摘要:题目传送门 ##算法分析:01背包+记忆路径 对于每一片 CD ,只有选和不选两种情况。直接 dfs 最坏情况下时间复杂度达到 \(O(n^2)\) ,显然不能过。由于只有两种情况,考虑01背包。用 \(dp_j\) 表示音轨长度为 \(j\) 时的最优解。容易得到: \(dp_j=\max(dp_ 阅读全文
posted @ 2021-06-22 22:21 Maplisky 阅读(41) 评论(0) 推荐(0)
摘要:题目传送门 Day1 T1 就这种难度了…… ##算法分析:01背包 拿到题目真没什么思路,先简单讲一下部分分的做法。 对于 \(\text{Subtask 1,2}\),考虑二进制枚举所有方案,然后计算利润。时间复杂度至少 \(\mathcal{O}(2^n)\) 。码量比正解还大,就不放了…… 阅读全文
posted @ 2021-06-22 22:19 Maplisky 阅读(80) 评论(0) 推荐(0)
摘要:题目传送门 既然没人发题解那就毫不客气地收下啦! Update 2021.4.24:修复了时间复杂度错误。。 ##题意简述: 给你一个 \(n\) 个整数的数组,你可以把它分成三段 ( 任意一段可以为空,满足 \(l+mid+r=n\) 就行 ),求一种划分方法,使得 \(l\),\(r\) 内的所 阅读全文
posted @ 2021-06-22 18:49 Maplisky 阅读(62) 评论(0) 推荐(0)
摘要:题目传送门 恶心的题目…… ##题目翻译有误: 第一行 \(T\) 不是数据组数,而应是该数据点属于哪个子任务。 题目分析: 其实这题没什么算法或者数据结构,主要考一个想法。 提供一个 \(\mathcal{O}(nlog(n))\) 的算法。 问题1:能否构成三角剖分? 有两种做法: 第一种:时间 阅读全文
posted @ 2021-06-22 18:48 Maplisky 阅读(335) 评论(0) 推荐(0)
摘要:题目传送门 无人问津的题目…… ##题目翻译: 第一行一个数 \(T\),表示数据组数。 对于每一组数据,给出 \(n\) 个数 \(a_0\ldots a_{n-1}\),和 \(m\) 个操作。每个操作包含一个区间 \([l,r]\)。每次取相邻的两个数进行异或,然后将得到的新数列不断进行上述操 阅读全文
posted @ 2021-06-22 18:41 Maplisky 阅读(45) 评论(0) 推荐(0)