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

北京公司网站开发阜阳建设大厦网站

北京公司网站开发,阜阳建设大厦网站,上海 网站建设 外包it,如何软件开发题目描述 一棵树上有n个节点#xff0c;编号分别为1到n#xff0c;每个节点都有一个权值w。 我们将以下面的形式来要求你对这棵树完成一些操作#xff1a; I. CHANGE u t : 把结点u的权值改为t II. QMAX u v: 询问从点u到点v的路径上的节点的最大权值 III. QSUM u v: 询问从… 题目描述 一棵树上有n个节点编号分别为1到n每个节点都有一个权值w。 我们将以下面的形式来要求你对这棵树完成一些操作 I. CHANGE u t : 把结点u的权值改为t II. QMAX u v: 询问从点u到点v的路径上的节点的最大权值 III. QSUM u v: 询问从点u到点v的路径上的节点的权值和 注意从点u到点v的路径上的节点包括u和v本身 输入输出格式 输入格式 输入文件的第一行为一个整数n表示节点的个数。 接下来n – 1行每行2个整数a和b表示节点a和节点b之间有一条边相连。 接下来一行n个整数第i个整数wi表示节点i的权值。 接下来1行为一个整数q表示操作的总数。 接下来q行每行一个操作以“CHANGE u t”或者“QMAX u v”或者“QSUM u v”的形式给出。 输出格式 对于每个“QMAX”或者“QSUM”的操作每行输出一个整数表示要求输出的结果。 输入输出样例 输入样例#1 4 1 2 2 3 4 1 4 2 1 3 12 QMAX 3 4 QMAX 3 3 QMAX 3 2 QMAX 2 3 QSUM 3 4 QSUM 2 1 CHANGE 1 5 QMAX 3 4 CHANGE 3 6 QMAX 3 4 QMAX 2 4 QSUM 3 4 输出样例#1 4 1 2 2 10 6 5 6 5 16 说明 对于100的数据保证1n300000q200000中途操作中保证每个节点的权值w在-30000到30000之间。 树链剖分模板。。。 code //By Menteur_Hxy #includecstdio #includeiostream #includealgorithm #includecstring #includevector #includecmath #define ll long long #define f(a,b,c) for(int ab;ac;a) using namespace std;inline ll rd() {ll x0,fla1; char c ;while(c9 || c0) {if(c-) fla-fla; cgetchar();}while(c9 c0) xx*10c-0,cgetchar();return x*fla; }inline void out(ll x){int a[25],wei0;if(x0) putchar(-),x-x;for(;x;x/10) a[wei]x%10;if(wei0){ puts(0); return;}for(int jwei;j1;--j) putchar(0a[j]);putchar(\n); }const int MAX300100;//直接开了十倍qwq const int INF0x3f3f3f3f; int n,cnt,N;int head[MAX],W[MAX],size[MAX],h[MAX],fa[MAX],son[MAX]; //W 点权 size 树的大小 h 深度 fa 父亲 son 重儿子 int num[MAX],top[MAX],tree[MAX],maxn[MAX],sumn[MAX]; //num 在线段树编号 top 链最上面的点 tree 线段树编号对应的点 struct edges{int next,to; }edge[MAX]; void add(int a,int b) {edge[cnt](edges) {head[a],b}; head[a]cnt;edge[cnt](edges) {head[b],a}; head[b]cnt; }void dfs1(int u,int pre,int dep) {size[u]1; h[u]dep; fa[u]pre;//initint mason0;for(int ihead[u];i;iedge[i].next) if(edge[i].to!pre) {int vedge[i].to;dfs1(v,u,dep1);size[u]size[v];if(size[v]mason) {masonsize[v];son[u]v;}} }void dfs2(int u,int pre) {if(son[pre]!u) top[u]u;else top[u]top[pre];num[u]N;if(son[u]) dfs2(son[u],u);for(int ihead[u];i;iedge[i].next)if(edge[i].to!pre edge[i].to !son[u])dfs2(edge[i].to,u); }void build_sum(int cur,int l,int r) {if(lr) {sumn[cur]W[tree[l]];return ;}int mid(lr)1;build_sum(cur1,l,mid);build_sum(cur1|1,mid1,r);sumn[cur]sumn[cur1]sumn[cur1|1];//update_sum }void build_max(int cur,int l,int r) {if(lr) {maxn[cur]W[tree[l]];return ;}int mid(lr)1;build_max(cur1,l,mid);build_max(cur1|1,mid1,r);maxn[cur]max(maxn[cur1],maxn[cur1|1]);//update_max }void po_ch_sum(int cur,int l,int r,int x,int v) {//point_change_sumif(lr) {sumn[cur]v;return ;}int mid(lr)1;if(xmid) po_ch_sum(cur1,l,mid,x,v);else po_ch_sum(cur1|1,mid1,r,x,v);sumn[cur]sumn[cur1]sumn[cur1|1];//update_sum }void po_ch_max(int cur,int l,int r,int x,int v) {//point_change_maxif(lr) {maxn[cur]v;return ;}int mid(lr)1;if(xmid) po_ch_max(cur1,l,mid,x,v);else po_ch_max(cur1|1,mid1,r,x,v);maxn[cur]max(maxn[cur1],maxn[cur1|1]); }int query_sum(int cur,int l,int r,int L,int R) {if(LlrR) return sumn[cur];int mid(lr)1,ans0;if(Lmid) ansquery_sum(cur1,l,mid,L,R);if(Rmid) ansquery_sum(cur1|1,mid1,r,L,R);return ans; }int query_max(int cur,int l,int r,int L,int R) {if(LlrR) return maxn[cur];int mid(lr)1,ans-INF;if(Lmid) ansmax(ans,query_max(cur1,l,mid,L,R));if(Rmid) ansmax(ans,query_max(cur1|1,mid1,r,L,R));return ans; }void INIT() {dfs1(1,0,1);// size h fa sondfs2(1,0);//top numf(i,1,n) tree[num[i]]i;//tree//建树 build_sum(1,1,N);build_max(1,1,N); }void solve() {int qrd(),a,b,ans0,f1,f2;char opt[6];f(i,1,q) {scanf(%s,opt);ard(),brd(),ans0;if(opt[0]C) {//HCANGEpo_ch_sum(1,1,N,num[a],b);po_ch_max(1,1,N,num[a],b);}else {f1top[a],f2top[b];if(opt[1]M) ans-INF;while(f1!f2) {if(h[f1]h[f2]) {swap(a,b);swap(f1,f2);}if(opt[1]S) ansquery_sum(1,1,N,num[f1],num[a]);else ansmax(ans,query_max(1,1,N,num[f1],num[a]));afa[f1];f1top[a];}if(num[a]num[b]) swap(a,b);if(opt[1]S) ansquery_sum(1,1,N,num[a],num[b]);else ansmax(ans,query_max(1,1,N,num[a],num[b]));out(ans);}} }int main() {nrd();f(i,1,n-1) add(rd(),rd());f(i,1,n) W[i]rd();INIT();solve();return 0; } 转载于:https://www.cnblogs.com/Menteur-Hxy/p/9247981.html
http://www.zqtcl.cn/news/667245/

相关文章:

  • visual stdio 做网站 注册用户 密码必须6位以上品牌服装网站源码
  • 做网站用到的技术湖南建设银行网站
  • 成都大型网站设计公司电脑上重新下载一个wordpress
  • 番禺网站建设知乎自己做网站卖矿山设备
  • 手表网站起名登录页面html模板
  • 泰国如何做网站推广大英网站建设工作
  • 山东省职业能力建设处网站dz论坛怎么做视频网站吗
  • 郑州专业做网站的公司今天郑州最新通告
  • wap网站引导页特效wordpress 文章 数据库
  • 做建筑效果图最好的网站做网站是如果盈利的
  • 企业网站seo托管怎么做seo公司培训
  • 自己做网站不想买空间 自己电脑可以做服务器吗?下载建设网站软件
  • 有服务器自己怎么做网站百度广告电话号码是多少
  • 一个网站 两个数据库沈阳市住房和城乡建设厅网站
  • 重庆建站网站流程及费用制作网页界面工具
  • 设计师家园官网wordpress 4.9 优化
  • 主机屋空间安装织梦后台程序后怎么弄成淘宝客网站襄阳网站制作
  • 怎么建设分销模式手机网站宜昌做网站的公司
  • 网上商城网站设计网页设计作业欣赏
  • 育才网站建设网站访问慢原因
  • 网站建设方案 备案品牌网站推广软件
  • 桓台县建设局网站前端开发入门培训
  • 前端怎么在猪八戒网站接单做烟台网站开发技术
  • 济南烨铭网站建设做英文网站2014
  • 哪个餐饮店微网站做的有特色3d动画制作收费标准
  • h5旅游网站开发wordpress的站点地址如何配置
  • 网站正在维护中 模板招远网站建设
  • 福田欧曼银河报价seo文章是什么
  • 古云网站建设模具培训网站建设
  • 帮助企业做网站的销售卫浴洁具公司网站模板