摘要: 1月12日 飞回家过寒假。打了CFR996,复习基本字符串算法。 1月13日 补CFR996,vpCFR992 1月14日 和队友vp了NEERC2024-2025,拼尽全力终于整出L和D。看了下榜大概是金牌水平就去吃饭了。吃完饭想补题发现连题解都没有,到算法群问了下,群u给了份俄文题解。。。得等以 阅读全文
posted @ 2025-01-13 17:52 EternalEpic 阅读(39) 评论(0) 推荐(0)
摘要: ddp题解,就是 \(f[pos][o][l][r]\) 表示线段树上pos位置的区间是否选出最大值,以及左右端点有没有被去到时的最大值。然后用线段树维护依次取某个值为最小值的时候dp的最优解。 const int N = 2e5 + 5; int T, n, a[N], f[N << 2][2][ 阅读全文
posted @ 2024-10-03 02:15 EternalEpic 阅读(131) 评论(0) 推荐(1)
摘要: 第一次学ddp的时候是2019年学长带我们复盘noip2018的保卫王国那道题,当时自然是不大会的,也不是很有就业空间,这几天CF有道正解是dsu的序列dp题被哥哥用ddp艹了过去,所以现在得复习一下ddp。 我们先从经典的树剖做法引入(全局平衡二叉树做法在我更新LCT复习笔记后再补) ddp最经典 阅读全文
posted @ 2024-10-02 23:58 EternalEpic 阅读(60) 评论(0) 推荐(0)
摘要: 首先,我们会有一个很简单的想法,枚举断边,产生两棵子树,然后在两棵树内分别求带权重心,计算贡献,这样的话复杂度是 \(O(n^2)\) 的。 那么我们要好好利用 $h \leq 100 $ 的性质。 考虑 \(sze[u]\) 为带权重量,\(g[u]\) 为以 \(u\) 为根的树,所有点都到 \ 阅读全文
posted @ 2024-10-01 23:42 EternalEpic 阅读(51) 评论(0) 推荐(0)
摘要: A 结论题,行着取 int n, m; signed main(void) { #ifdef ONLINE_JUDGE freopen("alter.in","r",stdin); freopen("alter.out","w",stdout); #endif read(n), read(m); w 阅读全文
posted @ 2024-09-29 22:17 EternalEpic 阅读(45) 评论(0) 推荐(0)
摘要: A int T, n, a[105], dp[105][2]; signed main(void) { for (read(T); T; T--) { read(n); int mx = 0, id = 0; for (int i = 1; i <= n; i++) { read(a[i]); if 阅读全文
posted @ 2024-09-28 00:31 EternalEpic 阅读(495) 评论(3) 推荐(1)
摘要: 原题比赛地址 A. Basic Diplomacy 模拟就好,就先随便取。然后对于大于 \(\lceil m/2\rceil\) 的那个数直接减到正好满足为止。 const int N = 1e5 + 5; int T, n, m, k[N], h[N]; vector <int> f[N], g[ 阅读全文
posted @ 2024-09-27 00:03 EternalEpic 阅读(61) 评论(0) 推荐(0)
摘要: 很有意思的题目,我们考虑能连边的两个数一定是在 01-Trie 上距离最近的两个点。于是我们先把所有数插入到 01-Trie 上去,然后 \(dp_u\) 考虑以 \(u\) 为根的子树中最多能留几个数,他的两个儿子内部的点只能在内部转移,你只能取一个儿子和另一个儿子的一个,也就是说我们的转移为 \ 阅读全文
posted @ 2024-09-25 09:34 EternalEpic 阅读(80) 评论(0) 推荐(0)
摘要: 数据结构 01trie const int M = 30; const int N = 2e5 + 5; int n, a[N]; struct Trie { int t[N * M][2], ed[N * M], dp[N * M], tot; inline void clear(void) { 阅读全文
posted @ 2024-09-25 09:23 EternalEpic 阅读(57) 评论(0) 推荐(0)
摘要: B. Bonus Cards 简单dp一下,记 \(f_{ij}\) 为前i次有j次分给第一类的概率。最后再算上我在第一类被选上的概率即可。 const int N = 3005; #define int long long int n, a, b; double f[N][N], g[N][N]; 阅读全文
posted @ 2024-09-23 23:15 EternalEpic 阅读(79) 评论(0) 推荐(0)