随笔分类 -  题解 / 算法

摘要:P4849 寻找宝藏 解题报告 简要题意 给出 \(n\) 个点,每个点的坐标为 \((a_i,b_i,c_i,d_i)\),每一个点有一个权值 \(v_i\)。从点 \(i\) 可以走到点 \(j\) 当前仅当 \[a_i \le a_j , b_i \le b_j , c_i \le c_j , 阅读全文
posted @ 2025-07-16 18:37 XiaoZi_qwq 阅读(8) 评论(0) 推荐(0)
摘要:CF1917D 解题报告 简要题意 给定一个长为 \(n\) 由 \(1\) 到 \(2n-1\) 中的奇数构成的排列 \(\{p_{n}\}\)(从 \(0\) 开始编号),和一个长为 \(k\) 由 \(0\) 到 \(k-1\) 构成的排列 \(\{q_k\}\)(从 \(0\) 开始编号)。 阅读全文
posted @ 2025-07-16 13:59 XiaoZi_qwq 阅读(6) 评论(0) 推荐(0)
摘要:CF1917E 解题报告 简要题意 给出一个大小为 \(n*n (n \bmod 2 = 0)\) 的矩阵,区间初始是由全 \(0\) 构成。请往其中填充 \(k\) 个 \(1\),使得每行每列的 \(\text{XOR}\) 值相等,或报告无解。 赛时分析 首先易证当 \(k\) 为奇数时,一定 阅读全文
posted @ 2025-07-15 15:06 XiaoZi_qwq 阅读(5) 评论(0) 推荐(0)
摘要:[NOISG 2022 Qualification] Dragonfly 解题报告 简要题意 一棵有 \(n\) 个节点的树,每个节点有一个颜色 \(s_i\) 和权值 \(b_i\)。现在有 \(d\) 个形如 \(h_i\) 的询问,对于每个询问,你需要回答简单路径 \((1,h_i)\) 上权 阅读全文
posted @ 2025-07-14 17:42 XiaoZi_qwq 阅读(14) 评论(0) 推荐(0)
摘要:题目概述 在一个 \(n*m\) 的平面上,有一条通过四连通形成的长 \(2k+1\) 的路径。现在给出所有奇数位置的坐标,求可能的路径数量。 赛时分析 首先考虑最简单的情况:两个编号相邻的点,如果可行,那么它们的曼哈顿距离一定为 \(2\)。在此基础上,如果它们的横(纵)坐标相同,那么显然就一种方 阅读全文
posted @ 2025-07-14 14:59 XiaoZi_qwq 阅读(9) 评论(0) 推荐(0)
摘要:房租 解题报告 题目描述 现在你有一个 \([1,n]\) 的区间,现在你将面对 \(m\) 个询问,每个询问都形如 \((l_i,r_i)\) ,你需要按照时间顺序依次处理这些询问。 所有询问都会提前给出。对于询问 \((l_i,r_i)\),它可以被接受当且仅当: \(r_i-l_i+1 \ge 阅读全文
posted @ 2025-07-13 21:03 XiaoZi_qwq 阅读(12) 评论(0) 推荐(0)
摘要:跑操 解题报告 简要题意 在 \([1,n\)] 上有 \(m\) 个区间,每个区间有一定价值,每个点有一定花费。对于一个由若干区间构成的集合,其的价值为其包涵区间的总价值减去所有区间的并所覆盖的所有节点的花费。我们可以从这 \(m\) 个区间中取出一个集合,求可以获得的最大价值。 数据规模:\(n 阅读全文
posted @ 2025-07-13 20:36 XiaoZi_qwq 阅读(10) 评论(0) 推荐(0)
摘要:CF1004E 解题报告 题目 你有 \(n\) 个桶,每个桶里有 \(a_i\) kg 的水,其中一个桶的水里有 \(0.114514\) kg的毒药。现在你可以比较任意两个桶的质量,同时你也可以将一定安全的桶里的水倒入任意一个桶里。现在对桶的序列进行 \(m\) 次修改,每次都会增加/减少一个有 阅读全文
posted @ 2025-07-12 15:04 XiaoZi_qwq 阅读(3) 评论(0) 推荐(0)
摘要:P9415 「NnOI R1-T4」下楼 题解 初步分析 首先要想绳子怎么用最优。因为环的部分可回收,因此环越长越好。若我们令绳子的最短长度为 \(L_{min}\),环的部分长 \(len\),该次下楼两管间隔为 \(dis\),当环长和楼层间隔确定时显然有: \[L_{min}=\begin{c 阅读全文
posted @ 2025-07-12 13:48 XiaoZi_qwq 阅读(11) 评论(0) 推荐(0)
摘要:P6645 [CCO 2020] Interval Collection 题解 题意概述 给定一个由区间构成的可重集 \(S\),求 \(S\) 的一个非空子集,使得 \(P\),使得在所有 \(S\) 的非空子集中,\(P\) 中所有区间的交最小,且 \(P\) 中所有区间的右端点最大值和左端点最 阅读全文
posted @ 2025-07-10 19:54 XiaoZi_qwq 阅读(11) 评论(0) 推荐(0)
摘要:其中 \(N \leq 2e4\) 且 \(M \leq 1e4\)。 初看发现一行只有两个不同的字符构成,因此想到: 令 \(f_{i,c1,c2}\) 为使前 \(i\) 行符合条件,且第 \(i\) 行第一个字符为 \(c1\),第二个字符为 \(c2\) 的最小代价; 令 \(g_{i,c1 阅读全文
posted @ 2025-07-09 21:46 XiaoZi_qwq 阅读(20) 评论(1) 推荐(1)
摘要:其中 \(n,m \leq 100\)。 初见毫无思路,于是打了暴力。枚举了一定范围内的 \((n,m)\),发现答案矩阵长这样: \(\begin{bmatrix} 1 & 0 & 1 & 0 & 1 & ... \\ 0 & 2 & 0 & 8 & 0 & ... \\ 1 & 0 & 16 & 阅读全文
posted @ 2025-07-09 21:26 XiaoZi_qwq 阅读(9) 评论(0) 推荐(0)
摘要:题目描述 分析题意 首先我们需要理解 “联通” 这个概念。有两种情况被称为“联通”: 对于同一列的相邻的两个格子,它们都是 “.”,“|”或“O”三者之一 对于同一行的相邻的两个格子,它们都是 “.”,“-”或“O”三者之一 然后我们看到本题需要维护联通块,因此可以考虑使用并查集维护联通块。 其次, 阅读全文
posted @ 2025-07-07 18:04 XiaoZi_qwq 阅读(9) 评论(0) 推荐(0)
摘要:其中 \(N \leq 500 M \leq 12470\) 第一个问很简单,直接跑SPFA或DJ都可以。 关键是第二个问,我们可以转化一下题意:去掉某些边,让最短路权值变大,等价于去掉某些边,使得只通过原最短路上的边无法到达终点。 “删去某些边,使得原图不连通,并且花费最小。”这不就是最小割吗!所 阅读全文
posted @ 2025-07-07 16:47 XiaoZi_qwq 阅读(7) 评论(0) 推荐(0)
摘要:题意简而言之就是:求每一个点作根时,叶子节点的深度之和。 这么一看就发现,这是很经典的换根dp。 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define add(u,v,w) adds(u,v 阅读全文
posted @ 2025-07-07 16:39 XiaoZi_qwq 阅读(4) 评论(0) 推荐(0)
摘要:看到“没有就加上,有了就减去”,就应该可以想到异或操作;查询树上一段路径,可以直接树上差分。 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define add(u,v,w) adds(u,v,w 阅读全文
posted @ 2025-07-07 16:35 XiaoZi_qwq 阅读(4) 评论(0) 推荐(0)
摘要:题目描述 一眼数位dp,预处理很简单,但是统计逆天。 启示:只要不TLE和MLE,不要嫌状态多/麻烦 #include<bits/stdc++.h> #define inf 0x3f3f3f3f using namespace std; inline int max(int x,int y){ret 阅读全文
posted @ 2025-07-07 16:30 XiaoZi_qwq 阅读(3) 评论(0) 推荐(0)
摘要:其中 \(N \leq 1e18\) , \(T \leq 1e3\) 注意到用于凑数的是斐波那契数列,所以可以用于凑数的数字不超过 \(logn\) 个。 直接搜索,常规剪枝即可 启示:充分剪枝的前提下,可以使用 STL 容器进行记忆化 #include<bits/stdc++.h> #defin 阅读全文
posted @ 2025-07-07 16:29 XiaoZi_qwq 阅读(4) 评论(0) 推荐(0)