随笔分类 -  数据结构-线段树

摘要:XM6138 分糖果 stO jc Orz 解题思路 很神奇的一题。 看到题目首先想到的就是二分答案。那么问题转化为了如何验证一个答案 $x$。 我们定义函数 $f_{i,j}$ 表示考虑前 $i$ 个小朋友,是否可以分成 $j$ 段,使得每一段都满足和小于 $x$。这个函数很好转移: $$f_{i 阅读全文
posted @ 2022-09-04 14:54 huayucaiji 阅读(37) 评论(0) 推荐(0)
摘要:CF1705E Mark and Professor Koro 解题思路 我们可以知道,这里面可能会发生连锁反应,每次我们加入一个数字,就可能会导致前面一整条“链”不断合并,最后成为一个数。 比如说,我们现在有 $x,x+1,x+2,\dots,y$,我们再加入一个 $x$,我们这一串数字就会消失, 阅读全文
posted @ 2022-07-18 22:53 huayucaiji 阅读(70) 评论(0) 推荐(0)
摘要:NOIOL2020 T1丹钓战 前言 来,看我看我,我宣布个事哦!我是个煞*。 解题过程 这道题我想分享一下我做题的过程和心路历程,实在曲折。 首先可以一眼看出的是,我们可以通过求对于任意的 \(i\),这个二元组可以直接或间接弹出其前面的二元组中最小下标,我们定义这个量为 \(lft_i\)。何为 阅读全文
posted @ 2022-03-27 13:53 huayucaiji 阅读(303) 评论(1) 推荐(0)
摘要:CF1557D Ezzat and Grid 前言 线段树好题一个。 解题思路 我们首先先要对数据进行离散化,这是一个常规套路。 正难则反,我们考虑 dp 。令 \(f_i\) 表示以 \(i\) 为结尾,最多可以选择多少行。显然,我们有转移方程: \[ f_i=\max\limits_{j<i \ 阅读全文
posted @ 2021-08-10 22:56 huayucaiji 阅读(130) 评论(0) 推荐(0)
摘要:【NOI2021 D1T1】 轻重边 前言 惨 hycj 惨 话说赛后有很多大佬评价这道题。 @ix35:近五年 NOI 最难的 D1T1。 @绝顶我为峰:也许是近几年最简单的 NOI 题。 @wangrx:这道题就差没把 “LCT” 写到题面中去了。 确实。 解题过程&思路 先说一下我最初的想法。 阅读全文
posted @ 2021-08-06 18:12 huayucaiji 阅读(140) 评论(0) 推荐(0)
摘要:CF1555D Say No to Palindromes 看题目问法是线段树来做的。 仔细分一下发现,若有一个没有回文子串的串 \(s\),对于任意 \(i\),一定有 \(s_i\neq s_{i-1}\neq s_{i+1}\)。也就是说吗,这三个字符分别对应 a,b,c。也就是说, \(s\ 阅读全文
posted @ 2021-08-03 16:46 huayucaiji 阅读(54) 评论(0) 推荐(0)
摘要:LG3626 [APIO2009]会议中心 前言 倍增的好题。不得不说,APIO 的题质量很高。 解法 为了方便计算,我们可以进行对每个节点离散化,最多会有 \(2n\) 个节点。 首先假设我们已经求得了最大值。我们需要来构造一组方案。 首先可以确定,我们要从第一条线段开始考虑,因为这样字典序一定最 阅读全文
posted @ 2021-04-30 20:09 huayucaiji 阅读(58) 评论(0) 推荐(0)
摘要:LG6168 [NOI Online #1 提高组] 冒泡排序 这个日好像不难,首先我们可以手算几组冒泡,我们可以发现一个特别的性质。 我们定义 \(c_i\),满足: \(c_i=\sum\limits_{j=1}^{i-1} [a_j>a_i]\) 我们会发现,每进行一次冒泡,每个 \(c_i\ 阅读全文
posted @ 2021-02-21 15:16 huayucaiji 阅读(95) 评论(0) 推荐(0)
摘要:CF915E Physical Education Lessons 这个题挺裸。 首先一开始想到线段树,然后写完一看数据范围 \(n\leq 10^9\),立马吓得删代码。 可是我们仔细看,\(1\leq 3*10^5\),不是很大,说明线段树上真正有效的区间很少。我们可以维护一个动态开点的线段树, 阅读全文
posted @ 2021-02-21 11:34 huayucaiji 阅读(107) 评论(0) 推荐(0)
摘要:CF242E XOR on Segment 这道题还蛮简单的。其实很经典。 看到 xor,第一下想到的是 \(01\) Trie,但是很显然不支持区间修改。于是我们可以自然地想到线段树。我们在每个节点上可以维护当前区间的和,但是不是用一个数来表示,而是用二进制表示的。我们记 \(num_{1,i}\ 阅读全文
posted @ 2021-02-21 11:18 huayucaiji 阅读(275) 评论(0) 推荐(0)