2019年4月24日

主席树套树状数组——带修区间第k大zoj2112

摘要: 一些实现上的细节 按照静态主席树建立 T[1-n] 用相同结构的树状数组 S[1-n]来维护 T[1-n] S[i]表示一棵权值线段树的根节点 update:修改位置i,必然要修改S[i],那么S[i+lowbit i]也要修改 query [l,r]:转化成前缀和问题,静态的初始主席树 T[r]- 阅读全文

posted @ 2019-04-24 22:17 zsben 阅读(446) 评论(0) 推荐(0) 编辑

卢卡斯定理——应用hdu4349

摘要: #include using namespace std; int n; int main(){ while(cin>>n){ int ans=1; while(n){ if(n&1)ans*=2; n>>=1; } cout<<ans<<endl; } } 阅读全文

posted @ 2019-04-24 20:56 zsben 阅读(141) 评论(0) 推荐(0) 编辑

可持久化线段树——区间更新hdu4348

摘要: 和线段树类似,每个结点也要打lazy标记 但是lazy标记和线段树不一样 具体区别在于可持久化后lazy-tag不用往下传递,而是固定在这个区间并不断累加,变成了这个区间固有的性质(有点像分块的标记了) update就按照这么来 查询时由于lazytag固定在区间上。所以向下查询的时候要把上层的la 阅读全文

posted @ 2019-04-24 19:56 zsben 阅读(296) 评论(0) 推荐(0) 编辑

主席树——树链上第k大spoj COT

摘要: 首先要求第k大就想到用主席树来处理 但是不能直接用树链剖分的dfs序来维护,因为一条链对应的dfs下标可能是断开的几段,无法用权值线段树来维护 那么久维护每个点到根节点的全值线段树,结点u的权值线段树记录了其到根节点路径上数值的出现次数 主席树相当于维护了一个前缀和,由树上前缀和可以分析出u->v路 阅读全文

posted @ 2019-04-24 15:51 zsben 阅读(292) 评论(0) 推荐(0) 编辑

导航