02 2025 档案

摘要:A. 麻将 怎么回事呢? 还是太浮躁了吗? 题面 给定 $ n $, $ m $ 和长度为 $ n $ 的序列 $ a $, 保证 $ n $ 为 3 的倍数, 且 $ a_{i} \in [1, m] $. 一个可重三元集合被称为面子, 当且仅当其为形如 $ \{x, x, x\} $ 或 $ \ 阅读全文
posted @ 2025-02-27 15:41 Steven1013 阅读(3) 评论(0) 推荐(0) 编辑
摘要:[USACO25JAN] DFS Order P 原题链接. 小清新区间 DP. 思路 首先考虑一下如果原图没有边的情况. 那么显然, 图的最终形态会是一棵树. \((\)因为多加边就会增加贡献, 一定不优\()\) 同时对于一个子树, 其子树内的 DFS 序一定是一段连续区间. 所以每个子树的决策 阅读全文
posted @ 2025-02-26 17:39 Steven1013 阅读(4) 评论(0) 推荐(0) 编辑
摘要:C. 有向图 题意 初始有一张含有 \( n \) 个点的有向图, 你可以不断向其中加入至多\( n(n-1) \)条边, 不允许加入重边或者自环. 定义一个长度为 \( m \) 的序列 \( \{a_i\} \) 为一个 SCC 序列, 当且仅当存在一种加边方案, 使得加入\( i \)条边后图 阅读全文
posted @ 2025-02-26 09:03 Steven1013 阅读(2) 评论(0) 推荐(0) 编辑
摘要:题面 & 题解 A. 数论 题意 给定 \(n, p\), 让你求: \[\sum_{i = 1}^n \sum_{j = 1}^p \varphi(i^j) \mod 10^9 + 7 \]其中 \(n \le 10^7, p \le 10^9\). 思路 首先我们可以线性处理逆元, 并筛出 \( 阅读全文
posted @ 2025-02-25 19:57 Steven1013 阅读(0) 评论(0) 推荐(0) 编辑
摘要:B. 大根堆 思路 考虑倒着插入每个节点以满足大根堆的性质, 那么最开始我们只有一个位置可供插入. 如果当前插入的点不一定是叶子结点, 那么可供插入的位置就会多一个; 如果其一定是叶子结点, 那么可供插入的位置就会少一个, 乘起来即可. void init() { scanf("%d %d", &n 阅读全文
posted @ 2025-02-25 19:27 Steven1013 阅读(0) 评论(0) 推荐(0) 编辑
摘要:D. 博弈论 给我绕昏了. 思路 考虑什么时候会是 Draw. 可以发现若 Alice 和 Bob 手中的数相等, 那么异或和就为 0, 也就是整个序列的异或和为 0. 接下来考虑异或和不为 0 的情况. 不妨设序列异或和为 \(s\). 我们对于每一位考虑, 如果这一位上是 0, 那么在这一位上, 阅读全文
posted @ 2025-02-25 19:25 Steven1013 阅读(0) 评论(0) 推荐(0) 编辑
摘要:k 短路 2024.10.24 CW 模拟赛 T2, 有些古老, 单独拿出来写. 题意 给定带边权的简单有向图, 满足: 每个点至多存在于一个简单环内; 任意两点之间至多存在一条简单路径. 求起点 \(S\) 到终点 \(T\) 的 \(k\) 短路长度. 其中 \(n \le 50, 1 \le 阅读全文
posted @ 2025-02-24 20:12 Steven1013 阅读(1) 评论(0) 推荐(0) 编辑
摘要:D. 送快递 思路 注意到题目中说「第 \(i\) 个时刻, 青蛙和周欣中的一个人要将快递送往位置 \(k_i\), 送完快递后, 那个人将停留在位置 \(k_i\)」, 那么就有一个 \(\mathcal{O}(n^2)\) 的 DP : \(f_{i, j}\) 表示执行完前 \(i\) 次操作 阅读全文
posted @ 2025-02-24 14:21 Steven1013 阅读(1) 评论(0) 推荐(0) 编辑
摘要:B. 美食节 思路 令 \(f_{i, j}\) 表示第 \(i\) 个活动后在 \(j\) 的最小疲劳值. 对于每一个 \(f_{i, j}\), 先从 \(f_{i - 1, j}\) 赋值过来, 接下来由两部分贡献. 第一部分: \[f_{i, j} = f_{i - 1, j} + \beg 阅读全文
posted @ 2025-02-24 10:25 Steven1013 阅读(2) 评论(0) 推荐(0) 编辑
摘要:A. 怎么又是先增后减 题意 给定一个序列 \(A\), 每次操作只能交换相邻两个元素, 求使得序列 \(A\) 先增后减的最小操作次数. 思路 我们每次考虑当前未被处理的最小的 \(x\), 其一定被移动到序列的最左边或者最右边. 若它向左移动, 那么移动次数即为左边比它大的数的个数; 向右也同理 阅读全文
posted @ 2025-02-24 08:26 Steven1013 阅读(4) 评论(0) 推荐(0) 编辑
摘要:C. 环上合并 zcy 讲的好. 思路 先考虑一下特殊性质 \(a_i \le a_{i + 1}\). 动手模拟一下可以发现, 对于第 \(2 \sim n - 1\) 个数, 我们需要使用 \(n - (\)该数出现次数\()\) 次操作; 而对于第 1 个和第 \(n\) 个数, 则需要 \( 阅读全文
posted @ 2025-02-24 08:25 Steven1013 阅读(1) 评论(0) 推荐(0) 编辑
摘要:Gold Transfer 模拟赛待补题. 算法 倍增, 贪心. 思路 仔细阅读题面, 发现「我们保证 \(c_i > c_{p_i}\) 成立」. 这意味着儿子节点的单价一定比父节点的高, 那么就有一个非常显然的贪心策略: 取越靠近根节点的越优. 我们每次寻找路径上最靠近根节点的非空节点是哪个, 阅读全文
posted @ 2025-02-21 20:57 Steven1013 阅读(3) 评论(0) 推荐(0) 编辑
摘要:题面 & 题解 T1 题面让我们求一个排列 \(p\), 使得 \(a_i \oplus b_{p_i} = x\), 其中每一个 \(x\) 均相等, 最后升序输出每一个 \(x\). 不难发现, \(x\) 只可能是 \(a_1 \oplus b_i\). (当然, \(a_1\) 可以是序列 阅读全文
posted @ 2025-02-21 10:56 Steven1013 阅读(11) 评论(0) 推荐(0) 编辑
摘要:题面 & 题解 T1 原题链接 算法 树的直径, 贪心. 思路 考虑每一颗树, 它的最长链即为它的直径. 题目中输入一张图, 且保证无环, 那么可以考虑在每一颗树中求出直径. 最后将这些树拼起来即为最长链的长度. #include "iostream" using namespace std; na 阅读全文
posted @ 2025-02-20 20:58 Steven1013 阅读(2) 评论(0) 推荐(0) 编辑
摘要:题面 & 题解 T1 算法 概率, 期望. 思路 根据期望的线性性, 可得第 1 堆石子被取走的期望时间 \(\displaystyle E(t) = 1 + \sum_{i = 2}^n P_i\), 其中 \(P_i\) 指的是第 \(i\) 堆石子在「第 1 堆石子被取走前」取走的概率. 注意 阅读全文
posted @ 2025-02-20 20:33 Steven1013 阅读(5) 评论(0) 推荐(0) 编辑
摘要:E. A, B, AB and BA 算法 字符串, 构造, 贪心. 思路 Resource. 首先可以发现我们可以从每一个 \(s_i = s_{i + 1}\) 分开以将字符串分成若干部分来分别处理. 具体来说: 对于 ABBABBABA, 我们可以将其分为 AB, BAB, BABA 这三段来 阅读全文
posted @ 2025-02-19 17:24 Steven1013 阅读(63) 评论(0) 推荐(0) 编辑
摘要:D. Palindrome Shuffle 题意 给定长度为 \(n\) ( \(n\) 为偶数) 字符串 \(s\), 你可以选择 \(s\) 的一个子串 \(t\) 并且随意交换 \(t\) 中每个字符顺序使得 \(s\) 成为回文串. 求 \(t\) 的最小长度. 算法 双指针, 字符串. 思 阅读全文
posted @ 2025-02-19 10:38 Steven1013 阅读(103) 评论(0) 推荐(0) 编辑
摘要:点分治 概念 点分治是一种针对可带权树上简单路径统计的算法, 适合处理大规模的树上路径信息问题. 注意: 对于树上路径, 我们不要求这棵树有根, 即我们只需要对于无根树进行统计. 例题引入 【模板】点分治 1 我们先任意选择一个结点作为根节点 \(rt\), 所有完全位于其子树中的路径可以分为两种: 阅读全文
posted @ 2025-02-17 21:07 Steven1013 阅读(7) 评论(0) 推荐(0) 编辑
摘要:White Magic 题面 思路 动手模拟可以发现, 如果原序列中不含 0, 那么最长的子序列即为本身 (因为 \(\rm{mex}\) 恒为 0, 而 \(a_i\) 均为正整数). 现在来考虑包含 0 的情况. 我们记 \(cnt_0\) 表示序列中 \(a_i = 0\) 的数量, 那么答案 阅读全文
posted @ 2025-02-12 11:42 Steven1013 阅读(6) 评论(0) 推荐(1) 编辑
摘要:题面 & 题解 T1 算法 区间 dp. 思路 int dfs(int l, int r, int x) { if (l > r) return 1; if (~f[l][r][x]) return f[l][r][x]; if (a[l] < x) return f[l][r][x] = dfs( 阅读全文
posted @ 2025-02-12 11:02 Steven1013 阅读(3) 评论(0) 推荐(0) 编辑
摘要:Little Brackets 题意 给定序列长度 \(2n\), 求「深度」为 \(k\) 的合法括号序列有多少个. 其中「深度」定义为序列前缀中左括号数量与右括号数量之差的最大值. 算法 动态规划. 思路 我们考虑求一个前缀. 令 \(f_{i, j}\) 表示长度为 \(2i\) 的合法括号序 阅读全文
posted @ 2025-02-10 15:17 Steven1013 阅读(15) 评论(0) 推荐(0) 编辑
摘要:每日一练做到的, 做不来. Decoding Martian Messages 算法 动态规划, 字符串. 思路 首先可以看出这是一道动态规划的题目. 这道题要求输出最终的字符串而非答案, 我们可以考虑先计算出答案数组再反推出最终的字符串. 先来考虑动态规划. 我们令 \(f_{i, j}\) 表示 阅读全文
posted @ 2025-02-09 19:36 Steven1013 阅读(5) 评论(0) 推荐(1) 编辑
摘要:原题链接 闲话 本来是模拟赛题目, 但是过于古老, 于是就单独拿出来写了. 算法 博弈论, 套路题? 思路 考虑从答案入手, \(\displaystyle \textrm{val}(S_1) - \textrm{val}(S_2) = \sum_{i < j \in S_1} \textrm{di 阅读全文
posted @ 2025-02-03 13:41 Steven1013 阅读(2) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示
深色
回顶
展开