尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

学习离线思想 [CSP-J 2022 山东] 部署

学习离线思想 [CSP-J 2022 山东] 部署
📅 发布时间:2026/6/20 21:20:20

[CSP-J 2022 山东] 部署

今天学习一下离线思想.

所谓离线, 就是等你操作完了后再问你问题, 每一次操作时间复杂度可能很大, 我们可以把操作堆起来最后一遍完成.

我们不妨记录两个内容, 一个是操作一在节点 \(u\) 要求增加的兵, 不妨将其设为 \(f(u)\); 一个是操作二在节点 \(u\) 要求增加的兵, 不妨将其设为 \(g(u)\).

我们首先记录所有操作,

for(int op,x,y;m--;){std::cin>>op>>x>>y;if(op==1)f[x]+=y;else g[x]+=y;
}

我们记录完之后, 就是要统计答案了. 我们不妨先思考操作二该怎么统计.
首先对于节点 \(u\) 而言, 其兵力增加就是 \(g(u)\), 而对于其子节点和祖先而言, 兵力都要增加 \(g(u)\).

void dfs(int u,int fa){ans[u]+=g[u];for(auto v:e[u]){ans[v]+=g[u];//祖先兵力也要增加, 故能跑的点兵力都要增加 g(u)if(v^fa)dfs(v,u);//显然深搜不能回到祖先}
}

我们再思考操作一该怎么统计.
首先对于节点 \(u\) 而言, 其增加的兵力就是 \(f(u)\). 但问题来了, 它的子树都要增加 \(f(u)\). 我们把增加的 \(f(u)\) 向下传即可.

void dfs(int u,int fa,LL down){ans[u]+=f[u]+down;for(auto v:e[u])if(v^fa)dfs(v,u,down+f[u]);
}

最后展示总代码, 当然肯定与上述有部分出入.

#include<iostream>
#include<vector>
#define P(A) A=-~A
#define NUMBER1 1000000
typedef long long LL;
typedef std::pair<int,LL> PLL;
int n;
LL ans[NUMBER1+5];
std::vector<std::vector<int>>e;
PLL c[NUMBER1+5];
void dfs(int u,int fa){ans[u]+=c[u].first+c[u].second;for(auto v:e[u]){ans[v]+=c[u].second;if(v^fa){c[v].first+=c[u].first;	dfs(v,u);}}
}
signed main(){std::cin.tie(nullptr)->std::ios::sync_with_stdio(false);std::cout.tie(nullptr);std::cin>>n;e.assign(n+1,std::vector<int>());for(int i=1;i<=n;P(i))std::cin>>ans[i];for(int i=1,u,v;i<n;P(i)){std::cin>>u>>v;e[u].push_back(v);e[v].push_back(u);}int m,q;std::cin>>m;for(int op,x,y;m--;){std::cin>>op>>x>>y;if(op==1)c[x].first+=y;else c[x].second+=y;}dfs(1,0);std::cin>>q;for(int u;q--;){std::cin>>u;std::cout<<ans[u]<<'\n';}return 0;
}

相关新闻

  • 2025年AI智能营销专业权威公司TOP5推荐,AI智能营销
  • 【玩转全栈】----Django模板语法、请求与响应 - 指南
  • 2025年挖掘机斗齿厂推荐:挖掘机斗齿正规供应商深度解析

最新新闻

  • 嵌入式GUI驱动开发实战:emWin显示与触摸驱动API深度解析
  • 基于OPPRF的模糊集合求交技术:原理、实现与隐私计算应用
  • CentOS 8 快速部署 Apache:dnf 模块流与 SELinux 实战指南
  • 大模型评估新范式:百选项压力测试的设计原理与工程实践
  • 2026年新消息:有实力的传菜电梯优质厂家选择与推荐指南 - 品牌鉴赏官2026
  • DNSControl + Debian 10:用Go实现声明式DNS管理

日新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号