摘要:
Sol 简单计算几何。 直接把四边形拆成两个三角形,枚举两侧最大的即可。 注意凹多边形,如果所有的点都在同侧,那么需要最大的减去最小的才行。 Code #include <bits/stdc++.h> #define x first #define y second #define pb push_ 阅读全文
摘要:
Sol 如果两个点相邻,那么边权为 。 如果两个点能通过一次操作来联通,此时这两个点一定满足 或者 的差小于等于 (手摸一下就知道了),此时边权为 。 其他情况边权就是 。 直接跑最短路,时间复杂度 。 阅读全文
摘要:
Sol 注意到加数次数总共就很少,那么删数操作也同样很少,所以暴力删除即可。 考虑如何找到原数所在的下标,直接二分,找到第一个满足 减去 已经被删的数的数量等于 的下标就是第 个数实际的位置,可以用二分树状数组。 时间复杂度 \(O(n\l 阅读全文
摘要:
Sol 不难想到暴力 DP,复杂度 ,无法通过。 观察转移方程,注意到贡献到每个点的状态一定是连续的区间,那么用前缀和维护就好了。 偏移量可以设置的大一些以防 RE。 Code #include <bits/stdc++.h> #define x first #define y 阅读全文
摘要:
Sol 很考验注意力啊。 注意限制是边权最大值,想到二分,对于能反向的边建双向边,否则建单向边,跑缩点后判断是否只有一个点没有入度,证明显然。 自己想出来的 *2200,很难得啊。 Code #include <bits/stdc++.h> #define x first #define y sec 阅读全文