Loading

随笔分类 -  具体问题

摘要:题面 挂个 pdf 题面下载 算法 分析题目发现, 一次进化等效于: 在 \(a\) 两端加 \(0\) 对于 \(i \in [1, n], a_i \leftarrow a_{i - 1} \oplus a_{i + 1}\) 于是猜测在 \(k\) 次操作之后 有 \(a_i \leftarr 阅读全文
posted @ 2024-10-15 10:11 Yorg 阅读(13) 评论(0) 推荐(0)
摘要:题面 挂个 pdf 题面下载 算法 \(40pts\) 状压 dp, 然而并不会打 \(80pts\) 及 \(100pts\) 下发题解 后话 这题只能等我后面 dp 水平提高后再来做了, 题解讲解不清晰 阅读全文
posted @ 2024-10-14 15:54 Yorg 阅读(12) 评论(0) 推荐(0)
摘要:题面 现在的题似乎都找不到原题了 挂个 pdf 题面下载 算法 容易想到链和菊花图的做法, 需要注意的是计算深度只能用 \(\rm{dfs}\) 来跑, 不能保证链的顺序与输入顺序相同 对于 \(n, m \leq 10^3\), 观察暴力做法 暴力 容易发现对于每一个点, 都要由起点 \(1\) 阅读全文
posted @ 2024-10-14 15:06 Yorg 阅读(11) 评论(0) 推荐(0)
摘要:前言 抽象模拟赛, 我现在菜的可怕 题面 疑似自出题, 反正不难, 就不找原题了 挂个 pdf 题目下载 算法 考虑建图, 如果一个点和相邻点的绝对值 \(= 2\), 则连一条边, 然后就变成了一个 DAG 上 dp 的计数题目。 有向是显然的, 无环是因为 \(a - x \times 2 < 阅读全文
posted @ 2024-10-12 17:39 Yorg 阅读(13) 评论(0) 推荐(0)
摘要:前言 抽象模拟赛, 我现在菜的可怕 题面 疑似自出题, 反正不难, 就不找原题了 挂个 pdf 题目下载 算法 对于 \(opt = 1, 2, 3\) 显然 hash 可做 对于 \(opt = 4\), 维护 hash 区间 代码 略 总结 hash 算法也可以求值域区间内出现的次数 阅读全文
posted @ 2024-10-12 15:47 Yorg 阅读(35) 评论(0) 推荐(0)
摘要:前言 抽象模拟赛, 我现在菜的可怕 题面 疑似自出题, 反正不难, 就不找原题了 挂个 pdf 题目下载 算法 暴力 显然可以用线段树维护 观察到与运算和或运算的优先级不好处理, 考虑每一位分开处理(位运算常见处理方法) 如果是与运算, 一旦为 \(0\), 置为 \(0\) 如果是或运算, 只需要 阅读全文
posted @ 2024-10-12 15:19 Yorg 阅读(43) 评论(0) 推荐(0)
摘要:题目 依旧是 T4 找不到原题 挂个 pdf 题目下载 算法 由于题目给的特殊性质 两条斜线都可以映射到 \(x\) 轴上处理 题目转化成线段上维护 \(\text{并长 } \times \sqrt{2}\) 于是非常好打 但是要先离散化, 注意离散化之后要记录原长, 因为离线知道了查询的所有节点 阅读全文
posted @ 2024-10-11 16:45 Yorg 阅读(20) 评论(0) 推荐(0)
摘要:算法 考虑转化 每个点 \(p_i\) 在一个平面直角坐标系中表示为点 \((i, p_i)\) 于是转化为一个棋盘问题, 即每一个点不能在 同一行 / 同一列 \(a\) 数组的限制相当于在左下角为 \((0, 0)\), 右上角为\((i, i)\) 中的正方形中, 有 \(a_i\) 个棋子 阅读全文
posted @ 2024-10-11 16:23 Yorg 阅读(36) 评论(0) 推荐(0)
摘要:算法 考虑求小于给定值的数的个数,可以给每个块再维护一个已经排好序的数组,整块加法对于这个块排好序的数组没有影响,零散块加法直接在原序列上加,再将零散块所处的整块从新排序。查询时零散块暴力查找,整块二分查找 代码 #include <bits/stdc++.h> #define int long l 阅读全文
posted @ 2024-10-11 15:50 Yorg 阅读(17) 评论(0) 推荐(0)
摘要:算法 容易发现行列的交换操作互不影响 又因为如果 \(a \leftrightarrow b, b \leftrightarrow c\) 那么显然 \(a \leftrightarrow c\) 由此想到把所有交换操作维护连通块, 对于每个连通块内的点, 总方案数就是块大小的阶乘 证明 块中可通过 阅读全文
posted @ 2024-10-11 11:54 Yorg 阅读(20) 评论(0) 推荐(0)
摘要:思路 一眼发现, 假设从 \(k\) 开始的数组 其答案为 \[\max^{i = 1}_n{(d_i - i + 1)} \]于是循环一遍, 记录当前的前缀与后缀, 假设现在循环到 \(i\) 容易发现对于 \([1, i)\) , 其答案为 \[\max^{j = 1}_{i - 1}{(d_j 阅读全文
posted @ 2024-10-10 20:00 Yorg 阅读(59) 评论(0) 推荐(0)
摘要:题目 由于没找到原题, 只能挂上 pdf 题目下载 算法 暴力 标准的 dp + 图论(可是考前并没有听说过) 于是推出式子 定义 \(dp_{u, g}\) 为从起点到 \(u\), 经过的边权的最大公倍数为 \(g\) 的最短路, 枚举 \(u\) 的出边 \(v\) \[dp_{v, g^{\ 阅读全文
posted @ 2024-10-10 11:51 Yorg 阅读(15) 评论(0) 推荐(0)
摘要:算法 暴力算法还得排序 观察到重要信息 我们保证 \(c_i > c_{p_i}\) 成立 因此可以贪心, 从离根最近的点一路向北向下找到查询点 要快速找到最上方不为空的点, 联想到倍增法, 于是优化到 \(O(\log n)\) 总时间复杂度 \(O(n \log n)\) 代码 #include 阅读全文
posted @ 2024-10-10 09:04 Yorg 阅读(20) 评论(0) 推荐(0)
摘要:算法 暴力思路显然 观察到更改操作最多只影响一条链 于是显然 代码 #include <bits/stdc++.h> const int MAXLEN = 263000; int k; std::string Result; int q; int Match; char New_Result; in 阅读全文
posted @ 2024-10-10 08:09 Yorg 阅读(19) 评论(0) 推荐(0)
摘要:算法 数据范围一眼数学题 然而考场并没有思路 这一类题显然要将 \(\gcd{(a, b)}\) 消掉或者表示 ( \(\rm{lcm}{(a, b)}\) 可以用 \(\gcd{(a, b)}\) 表示) 考虑 \(a = \gcd{(a, b)} * k_1\) 和 \(b = \gcd{(a, 阅读全文
posted @ 2024-10-10 08:01 Yorg 阅读(68) 评论(0) 推荐(0)