09 2024 档案
摘要:这可能也是一个关于匹配的经典 trick。 题意 给定常数 ,你需要维护一个集合 ,支持以下操作: 1 x,加入数 ,保证 之前不存在。 2 x,删除数 ,保证 之前存在。 每次操作后你需要回答 $$\max_{i,j\in S,i\n
阅读全文
摘要:题意 你有一个有序数对 ,每次你可以选择其中一个数并指定一个整数 ,然后将你选的那个数除以 下取整,另外一个数乘 。你现在想要把 变换成 构造一组在 65 步解决问题的方案,或报告无解。 \(1\le a,b,
阅读全文
摘要:题意 给定一个 DAG,你需要删掉一个点使得原图的最长路径的长度最短,求出答案和方案。 分析 DAG 的一条路径有一个优美的性质:一定是从拓扑序小的点指向拓扑序大的点。 考虑按照拓扑序从小到大处理每一个点。假设我们处理到了点 ,
阅读全文
摘要:介绍一种好想、在线、空间小、跑的还挺快的做法(?) 先暂时不考虑修改,只考虑怎么快速求解询问。 询问相当于区间内前缀按位或的和。根据按位或的性质,当区间内某个值在某一位下是 ,那么所有包含这个值的前缀的按位或结果在该位下都为 。 考虑拆位,单独考虑每一位对答案的贡献,设 \(w\
阅读全文
摘要:妙妙题。 题意 给定 点 边的单向无自环图,每条边有权值 ,表示要经过这条边要有至少 的收益,经过这条边之后会获得 的收益。对每个点求出从该点出发能不停止的行走初始需要获得至少多少的收益。无解输出 -1。 \(n,m\le
阅读全文
摘要:题意 给定两个长度为 的排列 。 初始你有一个空序列 。每次操作你可以选择任意一个长度 的序列,删掉其第一个元素,并把另外一个序列的第一个元素加入序列 的末尾,直到无法操作。不难发现 的长度为 。 求本质
阅读全文
摘要:题意 给定长度为 的字符串 ,只包含 0,1,?,其中 ? 可以任意替换为 0 和 1。 再给定 次单点修改,修改后查询字符串本质不同的子序列个数,对 取模。 分析 考虑没有修改怎么做。 首先跟 SA 没有
阅读全文
摘要:感觉是一个比较厉害的 trick,并且从来没见过,记录一下。 题意 给定 个数和 次操作: 1 l r x:区间 加 。 2 x v:查询在询问之前有多少时刻 。一次操作定义为一个时刻,初始为 时刻。 \(n,
阅读全文
摘要:记录这一类很典的 trick(?)。 题意 给定 个数, 次询问区间 内出现次数第 小的数的出现次数。若区间内不同数的个数小于 输出 -1。 。 分析 发现正常的数据结构以及分块都很难维护这种信息,考虑莫
阅读全文
摘要:T1 捏捏 这个题才是签到题。 右边为逆序对总数。为左边的值找一个具体意义,我们将证明这个值不大于等号右边的值。 考虑冒泡排序,右边即冒泡排序交换的次数(每交换一次一定减少一个逆序对)。左边一定不大于冒泡排序交换次数,因为左边的值只考虑了复原需要向左移动的数,而未考虑向右移动的数。更具体的是左边就是
阅读全文
摘要:之前做了一道高维前缀和题做着做着忘掉怎么写了,遂记一发。 你说的对,但是我谈的真的很浅。 铺垫 回忆一下我们求前缀和是怎么求的。 一维前缀和: for(int i=1;i<=n;i++){ s[i]=s[i-1]+a[i]; } 没有任何问题对吧。 而求二维前缀和时,我们通常会使用如下方法求前缀和(
阅读全文
摘要:题意 https://codeforces.com/contest/2006/problem/D 分析 考虑如果没有修改怎么重排最优。先把最大值丢进序列,再把最小值丢进序列,再把次大值丢进序列,再把次小值压进去,以此类推。感性理解的话不难发现这是最优情况,具体证明可以考虑调整法(但我懒)。 令 \(
阅读全文
摘要:题意 给定一棵带权树和 次询问,每次询问修改一条树边的权值,并查询修改后树的直径。询问之间不独立。 ,强制在线。 分析 回想一下,两个点的距离可以被表示成 。 而树的直径,本质上就是求 \(\ma
阅读全文