树链剖分+树状数组:ABC 460 G
https://atcoder.jp/contests/abc460/tasks/abc460_g考虑直接树剖单点权重修改是容易的单点颜色修改往上更新是容易的但往下合并不容易把下方值往上传亦不容易但如果往下合并的值提前记录好了呢我们可以多定义一个懒标记代表这个点所有与它本身颜色不同子节点的值的和利用这个懒标记我们即可实现颜色翻转时子节点信息的向上传递。这个懒标记的维护只需要我们每次往上修改时先修改完所有同颜色的然后再修改第一个不同颜色的即可#includebits/stdc.husingnamespacestd;#ifdefLOCAL#definedebug(...)fprintf(stdout,##__VA_ARGS__)#else#definedebug(...)void(0)#endif#defineintlonglonginlineintread(){intx0,f1;charchgetchar();while(ch0||ch9){if(ch-)f-1;chgetchar();}while(ch0ch9){x(x1)(x3)(ch^48);chgetchar();}returnx*f;}#defineZ(x)(x)*(x)#definepbpush_back#definefifirst#definesesecond//#define M//#define mo#defineN300010intn,m,i,j,k,T;intc[N];inttot;vectorintG[N];namespaceBin{intS[2][N];voidadd(intl,intr,intx,intco){autoAdd[](intx,intk,intco){if(!x)return;while(xtot){S[co][x]k;xx-x;}};debug(ADD [%lld %lld] %lld of (%lld)\n,l,r,x,co);Add(l,x,co);Add(r1,-x,co);}intqry(intx,intco){intans0;while(x){ansS[co][x];x-x-x;}returnans;}}namespaceBinC{intS[N];voidAdd(intx,intk){if(!x)return;// debug(BinCCCCCC %lld %lld\n, x, k);while(xtot){S[x]k;xx-x;}}intqry(intl,intr){autoQry[](intx)-int{intans0;while(x){ansS[x];x-x-x;}returnans;};returnQry(r)-Qry(l-1);}boolcheck(intl,intr){intansqry(l,r);// debug(Ans of [%lld %lld] is %lld\n, l, r, ans);if(ans0||ansr-l1)returntrue;returnfalse;}}namespaceTree{intw[N],F[N],son[N],a[N],dfn[N];inttop[N];voiddfs1(intx,intfa){w[x]1;F[x]fa;for(inty:G[x])if(y!fa){dfs1(y,x);w[x]w[y];if(!son[x]||w[y]w[son[x]])son[x]y;}}voiddfs2(intx,intfa){dfn[x]tot;a[tot]x;if(son[x])top[son[x]]top[x],dfs2(son[x],x);for(inty:G[x])if(y!fay!son[x]){top[y]y;dfs2(y,x);}// debug(top[%lld] %lld\n, x, top[x]);}intFa(intx){if(!BinC::check(dfn[top[x]],dfn[x])){intl,r,mid;ldfn[top[x]];rdfn[x];while(lr){mid(lr)1;if(BinC::check(mid,dfn[x]))rmid;elselmid1;}returna[l];}if(c[F[top[x]]]c[x])returnFa(F[top[x]]);elsereturntop[x];}voidadd(intx,intk,intcol){debug(Tree add %lld [%lld] %lld\n,x,k,col);if(c[x]!col)return;if(!BinC::check(dfn[top[x]],dfn[x])){intl,r,mid;lmiddfn[top[x]];rdfn[x];while(lr){mid(lr)1;if(BinC::check(mid,dfn[x]))rmid;elselmid1;}// debug(Now [%lld %lld] %lld %lld\n, dfn[top[x]], dfn[x], mid, (int)BinC :: check(mid, dfn[x]));Bin::add(l,dfn[x],k,col);Bin::add(l-1,l-1,k,col);}else{Bin::add(dfn[top[x]],dfn[x],k,col);if(c[F[top[x]]]c[x])add(F[top[x]],k,col);elseBin::add(dfn[F[top[x]]],dfn[F[top[x]]],k,col);}}voidop2(intx,intk){debug(OP2 %lld(%lld) %lld\n,x,Fa(x),k);add(x,k,c[x]);Bin::add(dfn[x],dfn[x],k,1-c[x]);}intop3(intx){intpareFa(x);debug(OP3 %lld : %lld %lld\n,x,pare,Bin::qry(dfn[pare],c[x]));returnBin::qry(dfn[pare],c[x]);}voidop1(intx){intkBin::qry(dfn[x],c[x]);if(c[F[x]]c[x])add(F[x],-k,c[x]);elseBin::add(dfn[F[x]],dfn[F[x]],-k,c[x]);BinC::Add(dfn[x],-c[x](1-c[x]));c[x]1-c[x];kBin::qry(dfn[x],c[x]);if(c[F[x]]c[x])add(F[x],k,c[x]);elseBin::add(dfn[F[x]],dfn[F[x]],k,c[x]);}}signedmain(){#ifdefLOCALfreopen(in.txt,r,stdin);freopen(out.txt,w,stdout);#endif// srand(time(NULL));// T read();// while(T--) {//// }intq,u,v;nread();qread();vectorintw(n10);for(i1;in;i)w[i]read();for(i1;in;i)c[i]read();c[0]n2;G[0].pb(1);for(i1;in;i){uread();vread();G[u].pb(v);G[v].pb(u);}Tree::dfs1(0,0);Tree::dfs2(0,0);// for(i 1; i tot; i) debug(%lld , Tree :: a[i]); debug(\n);for(i0;in;i)BinC::Add(Tree::dfn[i],c[i]);for(i1;in;i)Tree::op2(i,w[i]);while(q--){intop,x;opread();xread();if(op1)Tree::op1(x);if(op2){kread();Tree::op2(x,k);}if(op3){printf(%lld\n,Tree::op3(x));}for(i1;in;i)debug(%lld ,Bin::qry(Tree::dfn[i],0));debug(\n);for(i1;in;i)debug(%lld ,Bin::qry(Tree::dfn[i],1));debug(\n);debug(-------------------------------\n);}return0;}

相关新闻

二手应用材料 AMAT/APPLIED MATERIALS Endura SIP EnCoRe 机台技术规格详解

二手应用材料 AMAT/APPLIED MATERIALS Endura SIP EnCoRe 机台技术规格详解

本机台为 300mm 单片式集群 PVD(Physical Vapor Deposition)平台,搭载 SIP(Self-Ionized Plasma 自离子化等离子体)EnCoRe 工艺腔,用于 TaN 阻挡层、Cu Seed 铜籽晶层沉积,适配 45nm 至 3x 逻辑…

2026/7/1 14:35:07阅读更多 →
告别 CMake 绑定!CLion 2026 测试框架全面解耦,Meson 项目也能用上 GoogleTest 和 Catch2

告别 CMake 绑定!CLion 2026 测试框架全面解耦,Meson 项目也能用上 GoogleTest 和 Catch2

引言:C 开发者的“CMake 税”,该交了 如果你是一个 C 开发者,大概率经历过这样的场景:项目明明用的是 Meson 构建系统,却因为想在 CLion 里跑单元测试,不得不额外写一套 CMake 构建脚本,或者在 …

2026/7/1 14:35:07阅读更多 →
中小团队AI落地必读:零GPU预算也能跑通的5款轻量级大模型对比——Phi-3、Gemma-2B、MiniCPM实测吞吐/精度/显存占用三维度打分

中小团队AI落地必读:零GPU预算也能跑通的5款轻量级大模型对比——Phi-3、Gemma-2B、MiniCPM实测吞吐/精度/显存占用三维度打分

更多请点击: https://kaifayun.com 第一章:中小团队AI落地必读:零GPU预算也能跑通的5款轻量级大模型对比——Phi-3、Gemma-2B、MiniCPM实测吞吐/精度/显存占用三维度打分 中小团队常因硬件资源受限而难以启动AI项目,但当前一批真…

2026/7/1 14:35:07阅读更多 →
收藏!小白程序员快速入门大模型,Agent开发高薪就业指南

收藏!小白程序员快速入门大模型,Agent开发高薪就业指南

随着Agent和大模型成为技术圈热点,岗位需求激增,薪资诱人。然而,许多求职者因技能不匹配难以胜任。 放眼2026技术圈,Agent 绝对是当下最热门的方向。不管是大厂的技术动向,还是春招新增的岗位,核心都围绕着…

2026/7/1 15:40:44阅读更多 →
综艺路透引爆文旅热潮:品牌如何用AI打造同款打卡海报?

综艺路透引爆文旅热潮:品牌如何用AI打造同款打卡海报?

综艺效应与文旅营销的新变量综艺节目的路透图片正在成为文旅目的地营销的隐形引爆点。一档热门综艺在某个小镇取景拍摄,路透图流出后,当地搜索量往往呈指数级上涨。这种现象背后折射出当代消费者的行为逻辑转变,视觉刺激先于信息获取&#xf…

2026/7/1 15:40:44阅读更多 →
LENA-R8与PIC24实现全球物联网高精度定位方案

LENA-R8与PIC24实现全球物联网高精度定位方案

1. 项目背景与核心需求在全球物联网和位置服务快速发展的今天,实现设备的全球连接和精确定位已成为工业监控、资产追踪、野外作业等场景的刚需。这个项目通过LENA-R8蜂窝通信模块和PIC24HJ256GP610微控制器的组合,构建了一个兼具全球联网能力和高精度定位…

2026/7/1 15:40:44阅读更多 →
if __name__ == “__main__“ 讲解

if __name__ == “__main__“ 讲解

Python 脚本有两种运行方式:直接运行本文件:python test.py 内置变量 __name__ 会被自动赋值为字符串 "__main__";2 被…

2026/7/1 15:40:44阅读更多 →
Windows系统文件appfootprint.dll丢失找不到问题解决

Windows系统文件appfootprint.dll丢失找不到问题解决

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

2026/7/1 15:40:44阅读更多 →
8 款 AI 毕业论文写作工具横向实测,本硕博撰稿避坑全指南

8 款 AI 毕业论文写作工具横向实测,本硕博撰稿避坑全指南

前言:AI 写论文乱象频发,实测 8 款工具理清适配边界 每到毕业季,本科生、硕博生都会扎堆寻找 AI 论文辅助工具,市面上各类写作软件层出不穷,但普遍存在几类硬伤:虚假参考文献、无法匹配本校格式、不支持公…

2026/7/1 15:35:44阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/7/1 4:42:14阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

2026/7/1 5:19:01阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/1 0:01:44阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/1 0:01:44阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/1 0:01:44阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/1 0:01:44阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/1 0:01:44阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/1 0:01:44阅读更多 →