博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【BZOJ3626】【LNOI2014】—Lca(树链剖分)
阅读量:4322 次
发布时间:2019-06-06

本文共 2415 字,大约阅读时间需要 8 分钟。


发现一次询问的答案就是把[l,r][l,r][l,r]所有点到根的路径+1+1+1

zzz到根的路径权值和

离线差分就完了

#include
using namespace std;#define ll long long#define pb push_backconst int RLEN=1<<20|1;inline char gc(){
static char ibuf[RLEN],*ib,*ob; (ob==ib)&&(ob=(ib=ibuf)+fread(ibuf,1,RLEN,stdin)); return (ob==ib)?EOF:*ib++;}#define gc getcharinline int read(){
char ch=gc(); int res=0,f=1; while(!isdigit(ch))f^=ch=='-',ch=gc(); while(isdigit(ch))res=(res+(res<<2)<<1)+(ch^48),ch=gc(); return f?res:-res;}const int N=50005;const int mod=201314;inline int add(int a,int b){
return a+b>=mod?a+b-mod:a+b;}inline void Add(int &a,int b){
a=add(a,b);}inline int dec(int a,int b){
return a>=b?a-b:a-b+mod;}inline void Dec(int &a,int b){
a=dec(a,b);}inline int mul(int a,int b){
return 1ll*a*b>=mod?1ll*a*b%mod:a*b;}int n,m;namespace Seg{
int tr[N<<2],tag[N<<2]; #define lc (u<<1) #define rc ((u<<1)|1) #define mid ((l+r)>>1) inline void pushup(int u){
tr[u]=add(tr[lc],tr[rc]); } inline void pushdown(int u,int l,int r){
if(!tag[u])return; Add(tr[lc],mul(mid-l+1,tag[u])); Add(tr[rc],mul(r-mid,tag[u])); Add(tag[lc],tag[u]); Add(tag[rc],tag[u]); tag[u]=0; } void update(int u,int l,int r,int st,int des,int k){
if(st<=l&&r<=des){
Add(tag[u],k),Add(tr[u],mul(r-l+1,k));return;} pushdown(u,l,r); if(st<=mid)update(lc,l,mid,st,des,k); if(mid
siz[son[u]])son[u]=v; } } void dfs2(int u,int tp){
top[u]=tp,in[u]=++tot,idx[tot]=u; if(son[u])dfs2(son[u],tp); for(int e=adj[u];e;e=nxt[e]){
int v=to[e]; if(v==fa[u]||v==son[u])continue; dfs2(v,v); } } inline int querypath(int u,int v){
int res=0; while(top[u]!=top[v]){
if(dep[top[u]]
q[N];int ans[N],num;int main(){
n=read(),m=read(); for(int i=2;i<=n;i++){
int u=read()+1; addedge(u,i),addedge(i,u); } dfs1(1),dfs2(1,1); for(int i=1;i<=m;i++){
int l=read()+1,r=read()+1,p=read()+1; q[l-1].pb((qry){
p,-1,i}); q[r].pb((qry){
p,1,i}); } for(int i=1;i<=n;i++){
updatepath(1,i); for(int j=0;j

转载于:https://www.cnblogs.com/stargazer-cyk/p/11145541.html

你可能感兴趣的文章
java开发操作系统内核:由实模式进入保护模式之32位寻址
查看>>
第五讲:单例模式
查看>>
Python编程语言的起源
查看>>
Azure ARMTemplate模板,VM扩展命令
查看>>
第三周作业
查看>>
浅谈模块化
查看>>
(转)arguments.callee移除AS3匿名函数的侦听
查看>>
onNewIntent调用时机
查看>>
MYSQL GTID使用运维介绍(转)
查看>>
学习新语言等技能的历程
查看>>
04代理,迭代器
查看>>
解决Nginx+PHP-FPM出现502(Bad Gateway)错误问题
查看>>
Java 虚拟机:互斥同步、锁优化及synchronized和volatile
查看>>
2.python的基本数据类型
查看>>
python学习笔记-day10-01-【 类的扩展: 重写父类,新式类与经典的区别】
查看>>
查看端口被占用情况
查看>>
浅谈css(块级元素、行级元素、盒子模型)
查看>>
Ubuntu菜鸟入门(五)—— 一些编程相关工具
查看>>
PHP开源搜索引擎
查看>>
12-FileZilla-响应:550 Permission denied
查看>>