随笔分类 -  OI

上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 13 下一页
摘要:题意: 戳这里 分析: 暴力 对于 \(n<=6\) 的点我们可以暴力枚举集合,插板法 对于链的情况,我们将 \(1\) 节点左右分为两条链,把两条链的的点值放进两个堆里面,每一次将堆顶的元素取 \(max\) 正解 我们按照暴力的思路继续考虑,我们发现,对于一个节点,它的两个儿子的关系和上面暴力中 阅读全文
posted @ 2020-12-24 23:57 youth518 阅读(66) 评论(0) 推荐(0)
摘要:题意: 戳这里 分析: 暴力 \(O(nm\log )\) 模拟,\(p=2\) 的点判奇偶性,期望得分 \(20pts\) 正解 我们发现 \(c\) 恒定,所以经过一系列操作后,每一个元素变为了 \(\large x^{c^{c^{\dots {a_i}}}}\) 我们发现这个形式很欧拉定理,因 阅读全文
posted @ 2020-12-24 20:28 youth518 阅读(66) 评论(0) 推荐(0)
摘要:题意: 戳这里 分析: 暴力 按题目模拟,对于每一个询问操作,用并查集维护满足题意的边,求查询点所在连通块大小,复杂度 \(O(qm\alpha)\) 给询问排序,按重量降序,每次把满足要求的未被修改的边加入并查集,暴力枚举合法的修改操作,可撤销并查集维护,复杂度 \(O(q^2\log))\) 正 阅读全文
posted @ 2020-12-23 17:44 youth518 阅读(123) 评论(0) 推荐(0)
摘要:题意: 戳这里 分析: 区间加,区间翻转,区间查询最大值 如果没有第二个操作的话,就是线段树裸题 但是有了第二个操作也没有关系,我们有 \(fhq\) ( \(fhq\) 据说 \(treap\) , \(splay\) , 线段树能做的它都能做,唯一的缺点就是不能同时按 \(siz\) 或者 \( 阅读全文
posted @ 2020-12-17 23:38 youth518 阅读(85) 评论(0) 推荐(0)
摘要:题意: 戳这里 分析: 每个人按照 AC数目 为第一关键字降序,罚时 为第二关键字升序 的排序方式,动态修改,查询排名 这个修改和查询很平衡树,所以我们就上 \(fhq\) ,将值的大小当做键值,所以我们需要新建一个结构体,然后重载 \(<=\) 号,剩下操作和普通 \(fhq\) 一毛一样 代码: 阅读全文
posted @ 2020-12-17 23:28 youth518 阅读(104) 评论(0) 推荐(0)
摘要:题意: 戳这里 分析: \(sam\) 裸题,求第 \(k\) 大字符串 首先建出 \(sam\) 然后求出 \(siz[i]\) 表示 \(i\) 节点代表的串的 \(endpos\) 的集合大小 然后分情况讨论: \(T==0\) 只统计本质不同的串的个数,所以所有点的 \(siz[i]\) 都 阅读全文
posted @ 2020-12-17 23:22 youth518 阅读(82) 评论(0) 推荐(0)
摘要:题意: 戳这里 分析: 暴力 设 \(f[i][j]\) 表示枚举到第 \(i\) 个点,分成 \(j\) 段时的最小代价, \(f[i][j]=min(f[k][j-1]+(s*j+sumt[i]-sumt[k])*(sumc[i]-sumc[k]))\) 然后用李超树维护转移,复杂度 \(O(n 阅读全文
posted @ 2020-12-14 17:04 youth518 阅读(67) 评论(0) 推荐(0)
摘要:题意: 戳这里 分析: 首先树上路径操作,要用树剖 其次,操作等价于区间加一条线段,然后查询区间最小值 但是与普通李超树不同,这次 \(x\) 值并不连续,每次插入的线段下标是和给定起点的距离,那么我们更改一下维护的信息,线段树上 \(a\) 点的 $x $ 值是它离根的距离,然后我们将操作转化,每 阅读全文
posted @ 2020-12-13 20:57 youth518 阅读(121) 评论(0) 推荐(0)
摘要:题意: 戳这里 分析: 我们发现题意就是求一条边所连两个点各自的子树大小的乘积 但是关键问题来了,LCT 的本质是维护链的信息,那么怎么维护子树的信息呢? 常见操作就是新开一个数组用来记录子树信息( \(siz,val\) 等) 但是在 \(link,access,cut\) 这类修改 \(spla 阅读全文
posted @ 2020-12-09 23:00 youth518 阅读(49) 评论(0) 推荐(0)
摘要:题意: 戳这里 分析: 首先我们发现需要按 \(a,b\) 的大小动态加减边,直到 1 和 \(n\) 联通,所以上 LCT 具体做法就是,把边按 \(a\) 升序排好后,从小到大加边,每次新加入一条边 \(u -> v\) 时,分两种情况: 在同一个连通块内 此时删掉连通块里 b 最大的那条边,然 阅读全文
posted @ 2020-12-09 22:50 youth518 阅读(86) 评论(0) 推荐(0)
摘要:题意: 戳这里 分析: 暴力 \(O(n^3)\) 枚举转移,期望得分 $60pts$ 正解 化简式子,由于 m 和 n 是定值,所以平均数也可以看做定值 \(\large s^2 = \frac{\sum(a_i-\frac{sum}{m})^2}{m}=\frac{\sum {a_i}^2-2\ 阅读全文
posted @ 2020-12-08 22:22 youth518 阅读(85) 评论(0) 推荐(0)
摘要:题意: 戳这里 分析: 暴力 \(O(n^2)\) 的 DP ,\(f[i][j]=f[i-1][j-1]+f[i][j-1]*25\) 正解 我们发现 DP 方程与原串的形态无关,然后观察(题解) 式子,发现它可以通过组合数优化 \(f_{i,j}=C_{i-1}^{j-1}\times 25^{ 阅读全文
posted @ 2020-12-04 11:10 youth518 阅读(113) 评论(0) 推荐(0)
摘要:题意 戳这里 分析: 吐槽一句,洛谷题面有锅 暴力 先跑 \(k+1\) 遍 \(dijkstra\) 预处理出前 \(k+1\) 个点之间的最短路,以及到 $1$ 和 \(n\) 的最短路,然后 \(O(k^22^k)\) 的状压 DP 转移,但是由于 DP 数组的空间复杂度是 \(O(k\tim 阅读全文
posted @ 2020-12-02 14:26 youth518 阅读(153) 评论(0) 推荐(0)
摘要:题意: 戳这里 分析: 巨佬说这题是根号分治裸题,我还是太菜了 暴力 对于每一个询问,扫一遍原序列,求出 \(a\) 出现每一个位置,然后对于 \(b\) 一遍枚举出现的位置,一边双指针找出离 \(b\) 最近的 \(a\) 出现的位置,复杂度 \(O(qn)\) 正解 我们发现,对于一个长为 \( 阅读全文
posted @ 2020-12-01 21:05 youth518 阅读(256) 评论(0) 推荐(1)
摘要:题意: 戳这里 分析: 暴力 建分层图,直接跑最短路,把翻转次数当做最短路的状态之一,然后枚举最后的翻转状态 正解 我们发现翻转次数最劣情况下会达到 \(O(n)\) ,所以复杂度成了 \(O(n^2)\) 那么我们考虑如何优化,我们发现一个很显然的结论 当翻转次数超过 \(O(\log n)\) 阅读全文
posted @ 2020-12-01 20:49 youth518 阅读(96) 评论(0) 推荐(0)
摘要:题意: 戳这里 分析: 很久以前做过的题,在巨佬 fgf 的帮助下又学了一遍 暴力 直接设 DP 状态 \(f[i][j]\) 表示第一个序列枚举到第 \(i\) 位,第二个序列枚举到第 \(j\) 位时的最短时间,按题意模拟就好了 正解 我们发现暴力做法中大部分的情况下 DP 都没有做出任何决策直 阅读全文
posted @ 2020-11-30 20:52 youth518 阅读(166) 评论(1) 推荐(2)
摘要:题意: 戳这里 分析: 暴力 \(O(n \log n)\) 预处理 ST表 然后 \(O(n^2)\) 枚举左右端点 正解 我们要优化统计答案的复杂度,也就是说我们需要大概 \(O(n \log n)\) 的复杂度 来统计答案 很容易想到每一个点作为最大值和最小值的影响是一段区间,那么我们就递归通 阅读全文
posted @ 2020-11-27 20:48 youth518 阅读(127) 评论(0) 推荐(0)
摘要:题意: 戳这里 分析: 首先我们将题意转化,把行和列当做点,而每一个棋子,则是行和列之间的一条边,然后我们给边进行定向,使得每一个点的入度和出度的差值的绝对值不超过一 相当于在有向图上跑欧拉回路 代码: #include<bits/stdc++.h> using namespace std; nam 阅读全文
posted @ 2020-11-26 14:36 youth518 阅读(80) 评论(0) 推荐(0)

上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 13 下一页