当前位置: 首页 > news >正文

题解:B4374 [GXPC-S 2025] 花 / flower

题目传送门

题意大致理解:我们要维护一棵树,支持树上的单点修改,和子树的区间查询。

题意推敲
单点查询不在话下,我们需要区间查询用数据结构去维护的话没有一个好的、简单的树上结构来维护他。

那么我们可以根据这个子树这个性质来把这个树上转化为线性的数据结构问题。不难想到 DFS 序,一个节点 &u& 的子树内的节点的 DFS 序比 \(u\) 大,并且全部在 \([\ \operatorname{dfn[u],dfn[u]+siz[u]}\ )\) 的范围内。这样可以漂亮地用线性数据结构或者线段树、树状数组啥的来搞这个区间最大和。

实现细节:
我们处理完建树以后 DFS 一遍来得出 DFN 和 \(\operatorname {siz[u]}\),我们考虑把 \(\operatorname{v[i]}\) 映射到 \(\operatorname{arr[dfn[i]]}\)

然后我选择分块来写,无他,唯手熟尔。


CODE

#include<bits/stdc++.h>
using namespace std;
#define itn int
#define int long long
#define putcahr putchar
inline void read(int &x){x=0;int p=1;char ch=getchar();while(!isdigit(ch)){if(ch=='-')p=-1;ch=getchar();}while(isdigit(ch)){x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}x*=p;}
void write(int x){if(x<0){putchar('-');x*=-1;}if(x<10){putcahr(x+48);return;}write(x/10);putchar(x%10+48);}const int N=5e3+10,M=100;
int n,m,b[N],a[N],dfn[N],pos[N],L[M],R[M],siz[N],sum[M],len,cnt,tot;
vector<int>e[N];void init(){len=(int)sqrt(n);cnt=(n-1)/len+1;for(int i=1;i<=n;i++){pos[i]=(i-1)/len+1;}for(int i=1;i<=cnt;i++){L[i]=(i-1)*len+1;R[i]=min(n,i*len);sum[i]=*max_element(a+L[i],a+R[i]+1);}
}void dfs(itn x,int fa){siz[x]=1;dfn[x]=++tot;for(auto v:e[x]){if(v==fa)continue;dfs(v,x);siz[x]+=siz[v];}
}void update(int x,int c){a[x]=c;int res=0;for(int i=L[pos[x]];i<=R[pos[x]];i++){res=max(res,a[i]);}sum[pos[x]]=res;
}int catter(int l,int r){int res=0;for(int i=l;i<=r;i++){res=max(res,a[i]);}return res;
}int pre_block(int id){return sum[id];
}int query(int l,int r){if(pos[l]==pos[r]){return catter(l,r);}int res=0;res=max(res,catter(l,R[pos[l]]));res=max(res,catter(L[pos[r]],r));for(int i=pos[l]+1;i<pos[r];i++){res=max(res,pre_block(i));}return res;
}main(void){read(n);read(m);for(int i=1;i<=n;i++){read(b[i]);}for(int i=1,u,v;i<n;i++){read(u);read(v);e[u].push_back(v);e[v].push_back(u);}dfs(1,1);for(int i=1;i<=n;i++){a[dfn[i]]=b[i];}init();for(int i=1,opt,u,w;i<=m;i++){read(opt);if(opt==1){read(u),read(w);update(dfn[u],w);}else{read(u);write(query(dfn[u],dfn[u]+siz[u]-1));puts("");}}
}
http://www.jsqmd.com/news/51646/

相关文章:

  • 2025 年 11 月企业管理咨询公司品牌权威推荐榜:战略规划、组织优化与数字化转型领域的专业服务口碑之选
  • pytest 5 种核心测试场景的 极简示例
  • 2025 年恒温恒湿系统厂家最新推荐榜:技术实力与市场口碑深度解析,覆盖多行业适配需求实验室恒温恒湿系统/车间恒温恒湿系统/仓库恒温恒湿系统/厂房恒温恒湿系统/空调恒温恒湿系统公司推荐
  • 2025年11月道闸厂家排行详解:技术实力与市场表现的双重考量
  • 2025 年 11 月国内十大咨询公司权威推荐榜:战略规划、管理优化与数字化转型顶尖服务深度解析
  • 2025年11月孩子学人工智能哪家好?靠谱机构推荐及选择指南
  • flask: 获取接收到的所有post参数
  • 2025年11月合肥刑事律师推荐榜单:专业律师综合对比与选择指南
  • 2025年薪酬绩效管理咨询公司权威推荐榜:战略激励体系设计与数字化落地解决方案全景解析
  • 2025年11月山姆好吃食品推荐榜:五款热门零食综合对比与选购
  • 2025年11月杜甫研究学者专家排名榜:基于多维度的客观评测
  • 2025年11月杭州数字人公司推荐榜:专业对比与权威评测分析
  • 2025 年铝艺门厂家最新推荐榜,技术创新与品质服务双驱动的优质品牌深度解析铝艺大门/铸铝门公司推荐
  • 2025 最新 墨水厂家推荐排行榜:覆盖通用 / 填充 / 3D 打印等场景,ISO 参会企业领衔品质之选002 墨水/通用墨水/填充墨水公司推荐
  • 2025年优质的PPH储罐厂家最新排行推荐及选购指南
  • 2025 年 11 月企业运营管理咨询公司 TOP10 权威推荐榜:战略规划、流程优化与组织效能提升的顶尖智囊深度解析
  • PySpark - dropping non-existed column doesnt cause an error
  • 获取路径
  • 2025 年填充机厂家最新推荐榜,技术创新与品质口碑双重验证的标杆品牌胶囊填充机/自动胶囊填充机公司推荐
  • 2025年管理咨询公司权威推荐榜:战略规划、组织变革与数字化转型领域的十大领军品牌深度解析
  • 2025山东谷歌海外社媒运营公司权威推荐:海外社媒推广/国外海外社媒/外贸运营源头服务商精选
  • 2025 年焚烧炉测试厂家最新推荐榜:技术实力与市场口碑深度解析,兼具专业性与合规性的优质品牌焚烧炉测试/测试焚烧炉/焚烧炉去除率/焚烧炉处理设施性能测试/焚烧炉水泥窑测试公司推荐
  • 2025 深圳十大制造业短视频代运营品牌 细分领域专项服务商榜单
  • 2025 年企业管理咨询公司权威推荐榜:战略规划、组织优化与数字化转型领域十大领军品牌深度解析
  • 杂记2025-11-24
  • 2025 年成都月子中心服务商最新推荐榜,聚焦专业服务与用户口碑深度解析,甄选品质与实力兼具的优质品牌
  • AI 数据分析的终点不止数据探查:Aloudata Agent 构建“问数-归因-决策”完整闭环
  • Java 8/9/10+ 的新特性
  • 2025 年数粒机最新推荐榜:技术实力与市场口碑深度解析,甄选高效精准优质品牌电子数粒机/药片数粒机/胶囊数粒机/自动数粒机公司推荐
  • 甘老板发红包 拓扑反向建边求值