随笔分类 - 高级数据结构——树状数组
摘要:"题目链接 BZOJ" "洛谷" 区间第k小,我们可以想到主席树。然而这是静态的,怎么支持修改? 静态的主席树是利用前缀和+差分来求解的,那么对于每个位置上的每棵树看做一个点,拿树状数组更新。 还是树状数组的过程,区间加时,每到一个位置在这棵主席树中插入这个数。 查询时,将所有询问要访问到的主席树存
阅读全文
摘要:"题目链接" 矩形查询可以拆成四个点的前缀和查询(树套树显然 但是空间不够) 每个操作表示为(t,x,y),t默认有序,对x分治,y用树状数组维护 初始赋值需要靠修改操作实现。 cpp //119964kb 4380ms include include include define gc() get
阅读全文
摘要:"题目链接 BZOJ3262" "洛谷P3810" cpp / 5904kb 872ms 对于相邻x,y,z相同的元素要进行去重,并记录次数算入贡献(它们之间产生的答案是一样的,但不去重会。。) / include include include define gc() getchar() defi
阅读全文
摘要:"题目链接" 首先不需要存储每个字符串,可以将所有输入的字符依次存进Trie树,对于每个'P',记录该串结束的位置在哪,以及当前节点对应的是第几个串(当前串即根节点到当前节点);对于'B',只需向上跳一个节点。 然后构建Trie图。fail[]有一个重要意义是: 若fail[y]=x,那么y节点表示
阅读全文
摘要:题目链接: "BZOJ" "洛谷" $O(n^2)$DP很好写,对于当前的i从之前满足条件的j中选一个最大值,$dp[i]=d[j]+1$ cpp for(int j=1; j include include define gc() getchar() define now node[rt] def
阅读全文
摘要:题目链接: "COGS" 、 "BZOJ3236" Upd: 树状数组实现的是单点加 区间求和,采用值域分块可以$O(1)$修改$O(sqrt(n))$查询。同 "BZOJ3809" . 莫队为$O(n^{1.5})$次修改和$O(n)$次查询。 注意这两个需求并不平衡,所以在搭配数据结构时常使用分
阅读全文
摘要:1.COGS.2039. 树的统计 思路: 各种方法。 代码: 1.遍历树1 时间 0.314 s 平均内存 2.96 MB 1 #include<cstdio> 2 using namespace std; 3 const int N=100005; 4 5 int n,Enum,cnt,H[N<
阅读全文

浙公网安备 33010602011771号