上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 19 下一页
摘要: 只需对每个联通块的$dfs$树检查有没有返租边即可 复杂度$O(n + m)$ 阅读全文
posted @ 2018-09-14 22:45 remoon 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 好久没写过博客了.... 本题还是挺有趣的(很水的最短路) 关键在于怎么优化这$n^2$条连边 通常,我们希望用一些边来替代一条边从而减小边集 那么,注意到异或操作可以拆分成按位运算,因此我们只需考虑$i$和每一位异或的结果连边即可 由于我们由$i$转移到$j$时,有可能中间节点$i \wedge 阅读全文
posted @ 2018-09-14 21:52 remoon 阅读(275) 评论(0) 推荐(0) 编辑
摘要: 首先考虑一个集合的最大优美值怎么求出 考虑新增一个数,假设我们现在的优美值已经达到了$V$,那么只需要一个$[1, V + 1]$的数就可以使$V$达到更大 为了保证能添加尽可能多的数进来,我们这么构造: 对集合$S$排序,从小到大选择,直到选到$\sum\limits_{i = 1}^{j}v[j 阅读全文
posted @ 2018-08-30 19:17 remoon 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 观察样例,$ans(1) = 1, ans(2) = 10$,再手推一组,$ans(3) = 26$ 可以发现规律$ans(n) = (2n - 1)^2 + 1$ 如果还是没看出规律,那么打个程序去骗组数据 更明显了,是吧..... 证明很简单,懒得证了 阅读全文
posted @ 2018-08-30 15:52 remoon 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 机房某大佬告诉我,一条链在全局线段树中的区间最多有$log$段 因此同样的,代表不在这条链上的区间同样只有$log$段 对这$log$段区间进行维护即可 为了能够删除,在线段树的每个节点暴力维护一个堆 每次加入一条链时,在这$log$段区间上暴力加入元素 每次删除一条链时,暴力删除元素 询问时,对所 阅读全文
posted @ 2018-08-30 14:03 remoon 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 问题等价于选出$n / 3$个不相邻元素是权值和最大 这是一个经典贪心问题,同种树,拿堆维护即可,复杂度$O(n \log n)$ 阅读全文
posted @ 2018-08-30 07:59 remoon 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 枚举每个点作为次大值,用单调栈处理出左边 / 右边第一个比它大的数,直接回答 复杂度$O(n)$ 阅读全文
posted @ 2018-08-30 07:36 remoon 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 由于只有3行,因此只会会换行2次,假设$x, y$分别为这两次的换行点 那么答案为$S[1][x] +S[2][y] - S[2][x - 1] + S[3][n] - S[3][y - 1]$ 其中,$S[i]$表示第$i$行的前缀和 令$a[x] = S[1][x] - S[2][x - 1], 阅读全文
posted @ 2018-08-29 20:29 remoon 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 一开始想的时候,好像两个并查集就可以做......然后突然懂了什么.... 相同的并查集没有问题,不同的就不能并查集了,暴力的来个set就行了..... 合并的时候启发式合并即可做到$O(n \log^2 n)$ 如果打$splay$,那么启发式合并可以做到$O(n \log n)$ 阅读全文
posted @ 2018-08-29 17:32 remoon 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 水题..... 插入一个值$v$时,对于$[0, v - 1]$和$[v + 1, inf]$的点分别考虑就行了 删除相当于减去插入的贡献 用动态开点线段树卡点常数就过去了 复杂度$O(n \log n)$ 阅读全文
posted @ 2018-08-29 16:49 remoon 阅读(178) 评论(0) 推荐(0) 编辑
上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 19 下一页