上一页 1 ··· 3 4 5 6 7 8 下一页
摘要: 算法 暴力 建图直接跑 Kruskal, 显然能通过 \(64pts\) 的点 正解 分析 Kruskal 的复杂度 发现比较边权非常的浪费, 很显然是不必要的 并查集求环路也浪费了网格图的性质 考虑优化 把每一条边看做一个整体, 整体比较只需要 \(O((n + m) \log (n + m))\ 阅读全文
posted @ 2024-10-08 21:12 Yorg 阅读(12) 评论(0) 推荐(0) 编辑
摘要: 你让我做这个?(后补) 题面 下载链接 题解 下载链接 阅读全文
posted @ 2024-10-08 17:35 Yorg 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 题面 题目下载 算法 猜测最优解是 每一次染色都是之前染色的子集且颜色相反(证明不会) 所以可以逆向思维(注意直接逆向不成立) 最后一次染色一定在一个四连通块中, 之前的染色一定是后一次染色的超集 把每个颜色的连通块缩点, 例如 每次将一个点(即原图中的连通块)染色成反色, 相当于加入了与之连接的反 阅读全文
posted @ 2024-10-08 08:25 Yorg 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 算法 特殊性质 显然链的情况就是括号匹配 因此显然有代码 代码 #include <bits/stdc++.h> #define int long long const int MAXN = 5e5 + 20; int n; std::string Braket; int fa[MAXN]; boo 阅读全文
posted @ 2024-10-07 21:15 Yorg 阅读(16) 评论(0) 推荐(0) 编辑
摘要: 题面 题面下载 算法 转化题意 说白了就是给了你一堆点,让你数这种折线有多少个 (严格向下走,并且横坐标之间的差越来越小) 看着像一种在 y 轴方向排序的 dp 但是由于是折线, 所以需要加一维来判断转向 dp 设计 状态设计 \(dp_{i, 0/1}\) 表示第 i 个点, 是向左下还是右上 状 阅读全文
posted @ 2024-10-07 18:43 Yorg 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 题面 题目下载 算法 考虑当 \(k\) 确定的时候如何求答案, 显然对于所有形如 \([ak, (a+1)k)\) 的值域区间, 最大值一定是最优的 似乎怎么都是 \(O(n^2)\) 的算法 观察到 \(a_i\) 的值域比较小, 所以考虑桶 显然对于一段区间 \([L, R]\) 我们可以推出 阅读全文
posted @ 2024-10-07 17:16 Yorg 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 思路 不想打了 代码 后面再打 总结 写都没写怎么搞 阅读全文
posted @ 2024-10-07 15:21 Yorg 阅读(11) 评论(0) 推荐(0) 编辑
摘要: 算法 暴力 容易发现双指针可以找到每一个区间 \([L, R]\), 使得这个区间覆盖 \(1\) ~ \(n\) 的每一个数, 也即区间外覆盖 \(1\) ~ \(n\) 的每一个数, 这是 \(O(n)\) 的 考虑判断 对于两个数列 \(A\), \(B\) 显然, 在 \(A\) 中先取出的 阅读全文
posted @ 2024-10-07 15:07 Yorg 阅读(17) 评论(0) 推荐(0) 编辑
摘要: 算法 性质 首先容易观察到 \[\text{mex} (w_1, w_1 \And w_2, w_1 \And w_2 \And w_3,\cdots , w_1 \And w_2 \And w_3 \And \cdots w_k) \]中 集合 \[{w_1, w_1 \And w_2, w_1 阅读全文
posted @ 2024-10-06 17:00 Yorg 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 题目 下载链接 算法 可以发现是求逆序对 时间复杂度限制在 \(O(n \log n)\) 树状数组 记录每一个值的多少 转化为求前缀和 #include<iostream> #include<cstdio> #include<algorithm> using namespace std; int 阅读全文
posted @ 2024-10-06 14:48 Yorg 阅读(4) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 下一页