03 2022 档案
摘要:E - Range Sums 题目大意: 给定一些区间的和,判断是否可以在其中选择一些区间,使得可以通过这些区间的和算出 1 到 的区间和。 思路: 考虑将 看成点,对于 的区间和,相当于建一条 到 的边。那么要想算出 1
阅读全文
摘要:E - Edge Deletion 题目大意: 给出 个节点的无向图联通图,问最多可以删除多少条边,使得删除后的图,对于任意两个节点 、 其最短路都没有发生改变。 思路: 赛时以为是求 遍最短路,标记所有最短路上的边,然后剩下的就
阅读全文
摘要:P1966 火柴排队 题目大意: 求使两列数字相差距离最小的交换次数。 思路: 要想使得距离最小,必须让 序列的第 大值与 序列的第 大值处在相同的位置上。 值域是 ,考虑离散化获得第 \(k
阅读全文
摘要:SP3267 D-query 题目大意: 给出长度为 的序列, 次询问,每次为区间 有多少不同的数字。 思路: 显然可以用莫队解决,考虑带 log 的做法。 对于一个区间 来说,区间内若有重复出现的数,那么他上一次出现的位置除了第一次
阅读全文
摘要:D - New Year Concert 题目大意: 给出一个序列 。 对于一个序列 ,如果其中存在一个区间 ,满足区间 等于区间长度 ,则认为这个序列是不好的。 每次修改可以将任意一个数改成任意正整数。 现求对序列
阅读全文
摘要:单调栈主要用于解决 Next Greater Element 问题,即找左边/右边第一个比自己小/大的元素(位置)。 以下是对四种问题的实现。 #include <bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdi
阅读全文
摘要:F - Swap and Sort 题目大意: 给出一个 permutation,并给出 组关系 ,每次操作可以交换 ,问能否在 5e5 次操作之内将 permutation 变为升序序列,若能则输出交换次数和交换步骤
阅读全文
摘要:E - Skiing 题目大意: 个点每个点有一个点权,依据点权的大小关系确定 条边权,求最长路。 思路: 关于SPFA,他死了。 很明显是求带负权的最长路,赛后有数据毙掉SPFA,考虑如何转化边权使得可以用 dijkstra 求解。 我们将点权看作势能,加入到最短路的求解中
阅读全文
摘要:Parenthesis Checking 题目大意: 给出一个括号串,q 次以下两种操作: 输入 1 l r,交换第 -th 和 -th 的字符 输出 2 l r ,查询区间 子串是否是合法括号序列。 思路: 令 ( 为 ,) 为 。
阅读全文
摘要:进制 题目大意: 给出一个数字串,q 次以下两种操作: 输入 1 x y,修改第 x 个字符为 y 输出 2 x y ,代表查询区间 [x,y] 子串所能表示的某进制的最小值,对 1e9+7 取模。 思路: 要得到最小值,显然进制的选择是区间最大值+1。 看操作是单点修改和区间查询,我们考虑用线段树
阅读全文
摘要:F - Skate 题目大意: 每次移动,沿着一个方向一直运动,直到遇到障碍物才停下,问从起点到终点的移动次数。 思路: 由于之前玩过类似的游戏,题意比较好理解。 考虑每个位置上我们有哪些选择,按照题意,我们只有上下左右四个方向,并且沿着这个方向需要碰到障碍物,否则就会出界,注意碰到障碍物就会停止,
阅读全文
摘要:迷宫2 题目大意: 最小化修改的格子的数量,使得人物能从左上角走到右下角 思路: 在每一个位置上有改与不改两种选择,也就是 0 和 1 两种花费,要是花费最少,我们可以使用 01bfs 解决。 01bfs 本质上就是贪心的思想,运用双端队列,将花费为 0 的从队首加入,花费为 1 的从队尾加入,这样
阅读全文
