随笔分类 - 具体问题 / 线段树
摘要:思路 题意 有一个长度为 2×n+12 \times n + 12×n+1 的整数列表 aaa 初始恰好为 1∼2×n+11 \sim 2 \times n + 11∼2×n+1 的排列; 有一个集合 S\mathbb{S}S 初始为空, 进行 n+1n + 1n+1 次操作, 第 iii 次操作如
阅读全文
摘要:前言 确实是树上问题中一个非常神奇的部分 好好学一下 思路 点分树的性质其实还是比较好理解, 这里重点解释点分树的两棵段树是怎么回事, 具体如何维护 首先要知道的是, 维护两棵段树的目的是为了去除同子树中的贡献 贡献计算(查询) fai\textrm{fa}_ifai 表示点分树上的父子关系 su
阅读全文
摘要:前言 更重要的是研究这题的部分分, 赛时居然可以做到 没有拿到任何一个特殊性质 发现以前一直用的大标题很碍眼, 改了, 下课把之前的格式也改一下 思路 暴力 容易模拟, 做到 特殊性质 思路 你发现每一个区间都是其后面区间的前缀
阅读全文
摘要:思路 容易转化到枚举区间使得区间中的颜色都被全部选择 考虑优化 联想到数据结构处理点对贡献 考虑枚举右端点 , 求有多少种 是满足条件的 首先对于 右边出现过的颜色, 区间中一定不能包含 令每个颜色最右边的出现位置为 , 则有 \(\foral
阅读全文
摘要:前言 还是别把 的题都水过去, 好好想一想 不是哥们, 紫题? 思路 还是先想朴素的 , 令 表示拆分到了位置 , 此时的最大整数之和的最小值 \[f_i = \min_{k = 1}^{\sum_{j = k + 1}^{
阅读全文
摘要:思路 朴素 容易发现一个人资金变化是这样的: 对于 的情况, 会将其直接变成 对于 的情况, 将其变成 直接用线段树暴力的维护即可 巧妙 容易发现 相当于一个大保底, 我们先倒着处理出每
阅读全文
摘要:算法 考虑 令 表示前 个数中, 分成 组的最小花费 关于转移, 我们有 \[f_{i, j} = \min(f_{k, j - 1} + j \times \rm{Sum}(k + 1, i) + \max(k + 1, i
阅读全文
摘要:算法 转化题意, 即为 求树上最长不重链覆盖 长链剖分 显然可以使用长链剖分的思想, 直接剖分后贪心的求最大链即可 代码 #include <bits/stdc++.h> using namespace std; #define ll long long const int maxn = 1e5 +
阅读全文
摘要:前言 抽象模拟赛, 我现在菜的可怕 题面 疑似自出题, 反正不难, 就不找原题了 挂个 pdf 题目下载 算法 暴力 显然可以用线段树维护 观察到与运算和或运算的优先级不好处理, 考虑每一位分开处理(位运算常见处理方法) 如果是与运算, 一旦为 , 置为 如果是或运算, 只需要
阅读全文
摘要:题目 依旧是 T4 找不到原题 挂个 pdf 题目下载 算法 由于题目给的特殊性质 两条斜线都可以映射到 轴上处理 题目转化成线段上维护 于是非常好打 但是要先离散化, 注意离散化之后要记录原长, 因为离线知道了查询的所有节点
阅读全文