摘要: AB 略 C 解题思路 注意题目所描述的 penalty 是取最大值而不是求和。于是我们就可以用二分了,对于每个 mid,我们 check 的时候就贪心地来涂色:我们总是从蓝色开始涂,在红色处截止; 下面仅给出 check: CODE bool check(int mid) { int cnt = 阅读全文
posted @ 2025-03-02 17:30 Young_Cloud 阅读(27) 评论(0) 推荐(0)
摘要: 定义 从构建的过程来定义。 在 kruskal 算法最小生成树的过程中,我们从小到大得到了 \(n - 1\) 条最小生成树上的边。根据这些边我们重新构造一颗树,具体的,依次遍历上述 \(n - 1\) 条边,对于当前遍历到的边 \((u, v, val)\)(表示节点 \(u\) 和节点 \(v\ 阅读全文
posted @ 2025-02-28 17:07 Young_Cloud 阅读(37) 评论(0) 推荐(0)
摘要: 引入 有一些问题要求我们回答若干询问。这些询问通常都是互不相干的。有时候二分能够以 \(O(nlog(n))\) 的复杂度单独解决一个询问,但是对于所有的询问都采用二分的话就是 \(O(qnlog(n))\) 的复杂度会超时(可以看 ABC394 G 体会一下)。于是就有了并行二分这一解决方法。 并 阅读全文
posted @ 2025-02-28 12:50 Young_Cloud 阅读(45) 评论(0) 推荐(0)
摘要: ABCD 略 E 题目大意 给定一张图,对于图上的每两个点问这两点之间存不存在回文路径, 存在的话长度最短是多少 解题思路 (感觉难度 E > F) 首先在空路径的两端不断添加相同的路径,我们可以从短到长地找到所有长度为偶数的回文路径;而在长度为 1 的路径两端不断添加相同的路径,我们可以从短到长地 阅读全文
posted @ 2025-02-27 20:26 Young_Cloud 阅读(37) 评论(0) 推荐(0)
摘要: log 25-2-26 更新了多项式乘法的实现(前面光写 fft 去了) 25-2-26 更新三次变二次优化 和 迭代 fft 问题引入 现在有两个多项式: \(A(x) = \sum _{i = 0}^{n - 1} a_i x^i\) 和 \(B(x) = \sum _{i = 0}^{m - 阅读全文
posted @ 2025-02-23 22:27 Young_Cloud 阅读(119) 评论(0) 推荐(0)
摘要: log 25-2-26 新增了 G 题的题解 ABC 略(C其实就是阅读理解) D 题目大意 在 \(n\) 个骰子中指定两个骰子,问这两个骰子骰到同一个数的概率最大是多少 解题思路 直接暴力就好了:枚举每一个数,对每个数枚举每一对骰子。 CODE void solve() { int n = 0; 阅读全文
posted @ 2025-02-17 20:32 Young_Cloud 阅读(26) 评论(0) 推荐(0)
摘要: ABC 略 D 题目大意 01串中有若干 1,求至少通过交换多少次相邻的数,能使得所有的 1 是连续的。 解题思路 我用的中位数定理,让全部的 1 往最中间的 1 靠,然后硬算交换了多少次。 但感觉 std 更加巧妙简单,以下是我对 std 的理解: 目标是通过交换让所有的 1 都连续,也就是 1 阅读全文
posted @ 2025-02-16 22:20 Young_Cloud 阅读(30) 评论(0) 推荐(0)
摘要: 基本概念 众所周知(3,4,5)和(6,8,10)是两组勾股数,区别是前一组三个数的公因数是一而后一组的不是。像第一组勾股数一样三个数之间两两互质的就叫做 本原勾股数。而且将一组本原勾股数里的三个数同时扩大相同的倍数得到的一组数还是勾股数(只不过不是本原勾股数)。所以我们找勾股数时只用找本原勾股数就 阅读全文
posted @ 2025-02-14 20:19 Young_Cloud 阅读(209) 评论(0) 推荐(0)
摘要: A 栈秒了 CODE void solve() { int n = 0; std::cin >> n; std::stack<int> a; for (int i = 0; i < n; i++) { int x = 0; std::cin >> x; if (a.empty() || a.top( 阅读全文
posted @ 2025-02-14 19:30 Young_Cloud 阅读(18) 评论(0) 推荐(0)
摘要: A 略 B 贴个代码就完了 CODE 点击查看代码 void solve() { int n = 0, t = 0, k = 0; std::cin >> n >> t >> k; int ans = (n - k) / t; if (ans - 1 >= k) { ans = k + 1; } s 阅读全文
posted @ 2025-02-14 19:25 Young_Cloud 阅读(14) 评论(0) 推荐(0)