摘要:
B. Tairitsu 首先很容易想到一个加边后 DAG 上 DP 的做法。这个做法是 \(O(n^2)\) 的,考虑如何优化。 DAG 上 DP 的本质是一种刷表法,如果我们换成填表法会不会好一些呢? 设 \(f(i)\) 表示以 \(i\) 结尾的最长合法子序列的长度,\(O(n^2)\) 转移 阅读全文
摘要:
题外话 给大家讲个笑话,这四题写一起是因为别人送了一场校内模拟赛,结果赛后发现 Subtask 还要自己加,T3 的 SPJ RE 了,T4 的数据包还和 T3 发重了 COCI 2019-2020 #6 Trener 题目里有一个关键条件:前一个字符串必须是后一个字符串的子串。 这意味着,只要后一 阅读全文
摘要:
带有选拔性质的阶段性测试 Day -1 大部分人都在机房电竞,我随机刷了几道 CF 保持状态。虽然我这个阶段的人好像也没什么状态可言。 下午 4 点钟回家休息 Day 0 早晨起来一看手环的表带扣断了。自闭。不过倒是还能带,先将就着 上午在家休息 + 准备必要物品。 下午两点半上车,三点出发。车上看 阅读全文
摘要:
A 比较阅读理解。。读懂了还好 int n, p; std::vector<std::string> vs; int main() { std::ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> n >> p; rep (i, 阅读全文
摘要:
C. Bear and String Distance 简单题,直接从距离范围最宽广的字母开始选,每次贪心选最大的。 const int MAXN = 1e5 + 10; int n, k; char ss[MAXN]; struct E { char s, t; int id; } es[MAXN 阅读全文
摘要:
C. Not Equal on a Segment 脑子转不动,结果想了半天才做出来。。 有一个性质:\(a \geq b\) 且 \(a \leq b \Leftrightarrow a = b\) 所以我们需要维护一个区间最小值 \(\mathrm{minn}\) 和区间最大值 \(\mathr 阅读全文
摘要:
思维路径: xor 运算的特性 “是否不同” 相同会消掉 前缀和思想(处理区间查询、树上路径查询) 逐位处理 从高位到低位贪心 HDU 4825 Xor Sum 板子题。 将所有数字二进制从高位到低位插入 Trie 中,从高到低贪心地能取到 1 就取 1. const int MAXN = 1000 阅读全文
摘要:
在回家的车上打的,效果挺差。 A 一遍 AC。 std::string ss; int main() { cin >> ss; int n = (int) ss.size(); if (ss[n - 1] == 'r' && ss[n - 2] == 'e') cout << "er" << end 阅读全文
摘要:
C. Pearls in a Row 直接贪心做即可。 但是注意如果最后一段不合法,要把最后一段合进上一段,如果整个序列都不合法就无解。 #易错警示:仔细考虑无解条件,可能还有别的坑。 const int MAXN = 3e5 + 10; int n, aa[MAXN]; int lisan[MAX 阅读全文
摘要:
A B 都是垃圾题,不说了。 C. The Labyrinth 和之前做过的某道题相似,用 DFS 确定一下每个位置属于哪个联通块,然后确定一下每个 * 周围有哪几个联通块,去重可以直接 std::set 实现。 const int MAXN = 1000 + 10; int n, m; int g 阅读全文