摘要: 若$[0,i]$的数都可以得到,那么$[1,所有不大于i+1的数的和]$的数都可以得到。如此暴力枚举答案,用可持久化线段树支持查询,因为每次数字至少翻一倍,所以复杂度为$O(m\log^2n)$。#include#includeconst int N=100010,M=1800000;int n,m... 阅读全文
posted @ 2015-10-12 22:53 Claris 阅读(433) 评论(0) 推荐(0) 编辑
摘要: 离线算法:先将所有涉及到的串建成字典树,然后用线段树维护dfs序,时间复杂度$O(m\log L)$。在线算法:用替罪羊树动态维护Trie树的dfs序即可,时间复杂度$O(L\log L)$。#include#include#includeusing namespace std;const int ... 阅读全文
posted @ 2015-10-12 21:54 Claris 阅读(335) 评论(0) 推荐(0) 编辑
摘要: 首先通过不断翻转坐标系,假设三个点以横坐标为第一关键字,纵坐标为第二关键字排序后A在B前面,B在C前面。那么只需要处理以下两种情况:1.B的纵坐标在AC之间,这时三个点的距离和为$2((x_C+y_C)-(x_A+y_A))$。可以用线段树处理出每个点作为B时$x_A+y_A$以及$x_C+y_C$... 阅读全文
posted @ 2015-10-12 17:26 Claris 阅读(624) 评论(0) 推荐(0) 编辑