05 2023 档案

摘要:考虑 DP。 令 fi,0/1f_{i,0/1}fi,0/1​ 表示当前打完了第 iii 个字母,且 Capslock 现在处于开启或关闭时的代价最小值。 于是可以进行线性 DP。 #include <bits/stdc++.h> using namespace std; const int N = 阅读全文
posted @ 2023-05-28 16:31 HappyBobb 阅读(2) 评论(0) 推荐(0) 编辑
摘要:直接模拟即可。 #include <bits/stdc++.h> using namespace std; const int N = 2e5 + 5; int dx[] = { 0, 0, -1, 1 }; int dy[] = { -1, 1, 0, 0 }; int n, m, h, k; s 阅读全文
posted @ 2023-05-28 15:48 HappyBobb 阅读(2) 评论(0) 推荐(0) 编辑
摘要:比较经典的问题。 考虑根号分治,令 b=⌊n⌋b=\lfloor\sqrt n\rfloorb=⌊n​⌋。对于 k≥bk \geq bk≥b,直接暴力,复杂度是 O(n)O(\sqrt n)O(n​) 的。对于 k<bk < bk<b,考虑预处理 fi,jf_{i,j}fi,j​ 表示 t=i,k= 阅读全文
posted @ 2023-05-26 22:11 HappyBobb 阅读(3) 评论(0) 推荐(0) 编辑
摘要:非常套路的建图最短路。 首先有一个非常好思考的做法,对于 i,ji,ji,j,如果 iii 的集合和 jjj 的集合有交集,那么连 i↔ji \leftrightarrow ji↔j 的边。 但这样建图复杂度已经达到了 O(n2)O(n^2)O(n2) 以上,无法承受。 于是我们考虑转化。两个集合有 阅读全文
posted @ 2023-05-22 18:29 HappyBobb 阅读(5) 评论(0) 推荐(0) 编辑
摘要:题意 有一张 nnn 个点,初始时没有边的无向图。 你要维护 qqq 次操作,每次操作可能是下面的其中一个: 添加一条 uuu 到 vvv 的边。 删除与 uuu 相连的所有边。 每次操作后,输出孤立点数量。 解法 发现添加只会添加一条边,而删除则可能删除许多。一条边如果被加入一次,那么最多只会被删 阅读全文
posted @ 2023-05-22 18:25 HappyBobb 阅读(5) 评论(0) 推荐(0) 编辑
摘要:容易发现我们可以先对两个序列排序。 依次枚举 aia_iai​,那么另一个数应该 xxx 应该满足 x∈[ai−D,ai+D]x \in [a_i - D, a_i + D]x∈[ai​−D,ai​+D]。因此我们可以二分在这个区间的最大值 ppp,那么这个贡献就是 ai+pa_i+pai​+p,最 阅读全文
posted @ 2023-05-22 18:22 HappyBobb 阅读(9) 评论(0) 推荐(0) 编辑
摘要:由于 n≤8n\leq 8n≤8,所以可以考虑 O(n!)O(n!)O(n!) 暴力枚举全排列,并且依次计算是否满足题意要求。 #include <iostream> #include <cstring> #include <algorithm> #include <cmath> #include 阅读全文
posted @ 2023-05-22 18:18 HappyBobb 阅读(4) 评论(0) 推荐(0) 编辑
摘要:经典树套树。 考虑删除 xxx,我们找到 xxx 的位置 ppp,那么删除 xxx 后,所有在 1∼p−11 \sim p-11∼p−1 中且大于 xxx 的逆序对都没了,同时在 p+1∼np+1 \sim np+1∼n 中小于 xxx 的逆序对都没了。可以使用 CDQ,KD-TREE,分块,树套树 阅读全文
posted @ 2023-05-21 21:39 HappyBobb 阅读(2) 评论(0) 推荐(0) 编辑
摘要:直接贪心 先忽略 ?\texttt{?}?,算出一个值 vvv。 如果 n<vn<vn<v,那么答案就是 −1-1−1。 否则 n←n−vn \leftarrow n-vn←n−v,然后按位贪心,依次选即可。 #include <bits/stdc++.h> using namespace std; 阅读全文
posted @ 2023-05-17 20:01 HappyBobb 阅读(2) 评论(0) 推荐(0) 编辑
摘要:直接做是难的,发现这个东西似乎可以矩阵优化。 可以发现 [a+bb]=[ab]×[1011][a+bb] = [ab] \times \begin{bmatrix} 1 & 0 \ 阅读全文
posted @ 2023-05-16 18:50 HappyBobb 阅读(2) 评论(0) 推荐(0) 编辑
摘要:A. 易得。 #include <iostream> #include <cstring> #include <algorithm> #include <cmath> #include <cstdio> #include <set> #include <map> #include <unordere 阅读全文
posted @ 2023-05-13 11:07 HappyBobb 阅读(3) 评论(0) 推荐(0) 编辑
摘要:自定义结构体维护平衡树即可,并不需要哈希。 我们对于每个结构体维护名字、分数和插入时的编号。先按分数,后按插入编号重载运算符即可。 根据题意,我们要支持插入,求排名,按照排名求值以及删除操作。因为如果一个人的分数被更新,我们要在平衡树中修改它,即先删除后插入。 由于需要删除操作,所以需要写前驱操作, 阅读全文
posted @ 2023-05-03 21:06 HappyBobb 阅读(4) 评论(0) 推荐(0) 编辑
摘要:容易发现对于插入 xxx,如果我们找到了 xxx 的前驱 ppp 和后继 nnn,那么 xxx 一定位于 ppp 或 nnn 的某个儿子上。 仔细观察,发现 xxx 会位于 ppp 和 nnn 中深度较大的一个的儿子上。 于是我们依次插入每个数,查前驱后继,并且更新深度。 然后可以直接用 set 做 阅读全文
posted @ 2023-05-02 21:18 HappyBobb 阅读(3) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示