03 2025 档案
摘要:E. Porto Vs. Benfica 题意说的很清楚了,这里就不再过多阐述。 有个很直接了当的算法就是,枚举每一个点,并且枚举它相邻的一条边,从 \(1\) 跑到这个点的最短路加上这个点不经过这条边到 \(n\) 的最短路之和。 设 \(dist(u, \, v)\) 表示 \(u, \, v\
阅读全文
摘要:这东西其实蛮像最小斯坦纳树,不过我们通过状压DP的思想来讲一讲这个题。 形式化题意:考虑一共有 \(n\) 个点,\(m\) 条无向边,你需要从图中选出至多 \(K\) 条闭合路径,使得所有 \(w\) 个关键点都被覆盖,使得最长路径最小。 容易发现 \(n \le 500\),因此我们可以通过 F
阅读全文
摘要:子集遍历 for (int i = 0; i < 1 << n; i ++ ) 这个代码可以从 \(0\) 开始不重复的遍历每一个二进制数,因此时间复杂度 \(O(2^n)\)。 子集枚举 有的时候,我们希望枚举集合 \(i\) 所对应的所有自己,显然我们不可能循环套循环求与的方法做,时间复杂度是
阅读全文
摘要:对正串和反串分别建立 Trie 树,定义 \(dp[i][j]\) 表示正串 Trie 树上编号为 \(i\) 的点匹配反串 Trie 树上编号为 \(j\) 的点所能拼出最长 anti-border 的长度。 如此,从根节点开始搜索,直到无法匹配为止都可以搜,搜到底后回到根节点继续匹配,可以证明,
阅读全文
摘要:利用大写字母较少的性质,记录两个大写字母中间的串是否相等来进行转移。 设 \(f[i][j]\) 表示考虑用到第 \(i\) 个大写字母的时候,\(s\) 匹配到第 \(j\) 个字符时最长匹配数。 当前大写字母 \(t[pos[i]] = s[j]\) 时,显然有 \(f[i][j] = f[i]
阅读全文
摘要:英语不好吃大亏,题意想表达的是对于所有 \(n\) 元排列的 \(w(P)\) 最小,并不是满足 \(p_1 = s, \, p_m = t\) 的排列,因此最小的 \(w(P) = 2\),如果你看假了,这个题分讨没法做。 首先 \(w(P) = 2\) 能在什么条件满足?\(P\) 如果是个模
阅读全文
摘要:31 完全背包求方案数,具体参见代码。 // cpp #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N = 1e5 + 10; int main() { vector<ll> f(201);
阅读全文
摘要:91 这个题的扩展满足 \(N \le 2500\),枚举每个点的位置去计算太慢,我们能否通过枚举一条线来计算答案? 考虑枚举一条斜率为 \(\frac{y}{x}\) 的一条直线,这条直线在至少可以在范围内交出 \((x, \, y)\) 这个点,我们以 \((0, \, 0), \, (x, \
阅读全文
摘要:81 定义状态转移方程: \[dp[i][j] = \min(dp[i - 1][j], \, dp[i][j - 1]) + a[i][j] \]// cpp #include<bits/stdc++.h> using namespace std; const int N = 1010; int
阅读全文
摘要:D. MST in Modulo Graph 听说是一类题型,所以且做记录。 引用官方题解: 注意到,有用边的数量不超过 \(n\log{n}\) 条 我哪来的注意力。 通过枚举不同 \(p_i\) 的权值 \(k\),使得其他数值在 \((kp_i, \, (k+1)p_i)\) 的范围内,容易发
阅读全文
摘要:21 我们需要实现线性筛因数和 \(\sigma(n)\),这一点是可以办到的。 由算数基本定理可知:\(n = p_1^{\alpha_1}p_2^{\alpha_2}\ldots p_k^{\alpha_k}\),而 \(\sigma(n) = (1 + p_1 + \cdots + p_1^{
阅读全文
摘要:1 # python ans = 0 for i in range(1000): if i % 3 == 0 or i % 5 == 0: ans += i print(ans) 2 # python ans = 0 a = 0 b = 1 for i in range(10000000): c =
阅读全文
摘要:#!/usr/bin/env python3 import fastecdsa from fastecdsa.point import Point from utils import listener FLAG = "crypto{??????????????????????????????????
阅读全文
摘要:ARC194C 首先把所有的物品分类,可以得到四种不同的种类: \(0 \to 0\),不用管 \(0 \to 1\),需要变为 \(1\) \(1 \to 0\),需要变为 \(0\) \(1 \to 1\),有两种情况: 不改变 \(1 \to 0 \to 1\) 因此,考虑一个显然的贪心,从大
阅读全文
摘要:比赛难度挺高,但是很启发人的思维,这才是优质的题目,最终赛时只切了两道题,不过对我而言我觉得满足了。 C题 由题不难得出,双面牌要么改变牌组的奇偶性,要么不改变,也就是说,问题的关键在于双面牌。 只有一张双面牌的时候,我们容易看出,第一个拿到双面牌的人可以决定后面剩下的牌是奇数张还是偶数张,因此拿到
阅读全文
摘要:题链 P1552 [APIO2012] 派遣 左偏树板子题,每个节点存储一个忍者集合的大根堆,保证和小于等于 \(M\) 的情况下忍者数量最多,每次向父亲合并计算一次答案,最后取 \(\max\) 即可,复杂度 \(O(n\log{n})\)。 参考代码 #include<bits/stdc++.h
阅读全文
摘要:题链 P3261 [JLOI2015] 城池攻占 题面太长就不复述了,这是一道左偏树的题目,经过简要分析,我们得知对于一个骑士来说,他所走的路径是唯一且单调的,因此我们可以考虑通过拓扑序来遍历。 对于每个点维护一个左偏树,存储当前节点的骑士的参数,那么一个节点的骑士可以由若干子节点的左偏树合并而来。
阅读全文
摘要:题目脚本 from Crypto.Cipher import AES from Crypto.Util.number import inverse from Crypto.Util.Padding import pad, unpad from collections import namedtupl
阅读全文