倍增
倍增
不哭的超人
愿你孤独的努力终有回报,愿你前行的路上有人相伴。
展开
-
F. Array Partition(st表+结论)
F. Array Partition 解题思路: 这题用到了两个知识点。 区间最小值会随着区间长度增大而保持不变或者减小 区间最大值会随着区间长度增大而保持不变或者增大 所以可以枚举x,然后根据上面的性质,二分求y。 #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef long double lf; typedef pair<int,int>P; const int inf = 0x7f原创 2020-11-27 17:51:59 · 372 阅读 · 0 评论 -
P3295 [SCOI2016]萌萌哒(并查集+ST表倍增)
P3295 [SCOI2016]萌萌哒 解题思路:题目要求的是两个区间对应的值相等。假设先不看区间,如果求的是两个点相等,那么只要用并查集把题目相等的点连接起来求连通块的个数k,对于一个正整数来说,首位肯定是不能0,所以答案应该就是9*10(k-1)。但是本题是要求区间对应相等,那么可以用st表,有相等的尽可能相等合并。最后再来遍历一遍st表,把后面一段相对的往前合并。类似于线段树的pushdown,最后再来统计一下连通块的个数。 #include <bits/stdc++.h> using n原创 2020-11-17 14:43:42 · 166 阅读 · 0 评论