03 2025 档案

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