BZOJ - 1036 树的统计Count (LCT)
LCT试炼题(代码量居然完爆树剖?)
#include<bits/stdc++.h>
using namespace std;
const int N=3e4+,inf=0x3f3f3f3f;
int fa[N],ch[N][],flp[N],n,m,sta[N],tp,val[N],sum[N],mx[N],tu[N],tv[N];
bool isrt(int u) {return ch[fa[u]][]!=u&&ch[fa[u]][]!=u;}
int sf(int u) {return ch[fa[u]][]==u;}
void pu(int u) {sum[u]=sum[ch[u][]]+sum[ch[u][]]+val[u],mx[u]=max(max(mx[ch[u][]],mx[ch[u][]]),val[u]);}
void pd(int u) {if(flp[u])flp[u]=,flp[ch[u][]]^=,flp[ch[u][]]^=,swap(ch[u][],ch[u][]);}
void rot(int u) {
int v=fa[u],w=fa[v],f=sf(u);
if(!isrt(v))ch[w][sf(v)]=u;
ch[v][f]=ch[u][f^],fa[ch[v][f]]=v;
ch[u][f^]=v,fa[u]=fa[v],fa[v]=u;
pu(v);
}
void splay(int u) {
sta[tp=]=u;
for(int v=u; !isrt(v); v=fa[v])sta[++tp]=fa[v];
for(; ~tp; pd(sta[tp--]));
for(; !isrt(u); rot(u))
if(!isrt(fa[u])&&sf(fa[u])==sf(u))rot(fa[u]);
pu(u);
}
void access(int u) {for(int v=; u; u=fa[v=u])splay(u),ch[u][]=v,pu(u);}
void makert(int u) {access(u),splay(u),flp[u]^=;}
void link(int u,int v) {makert(u),fa[u]=v;}
void split(int u,int v) {makert(u),access(v),splay(v);}
int main() {
sum[]=,mx[]=~inf;
scanf("%d",&n);
for(int i=; i<n; ++i)scanf("%d%d",&tu[i],&tv[i]);
for(int i=; i<=n; ++i)scanf("%d",&val[i]),mx[i]=sum[i]=val[i];
for(int i=; i<n; ++i)link(tu[i],tv[i]);
scanf("%d",&m);
char s[];
while(m--) {
int x,y;
scanf("%s%d%d",s,&x,&y);
if(s[]=='S')split(x,y),printf("%d\n",sum[y]);
else if(s[]=='M')split(x,y),printf("%d\n",mx[y]);
else if(s[]=='H')splay(x),val[x]=y,pu(x);
}
return ;
}
BZOJ - 1036 树的统计Count (LCT)的更多相关文章
- BZOJ 1036 树的统计Count 树链剖分模板题
题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1036 题目大意: 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w.我们将 ...
- [置顶] bzoj 1036 树的统计Count 点权值模板
树链剖分 点权型可做模板,链路剖分的思想把点hash到线段树的上,然后可通过n*(log(n)*log(n))的复杂度在树上操作,在线段树上能操作的在链路上都能操作. #include<cstd ...
- bzoj 1036 树的统计Count
题目大意: 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w 我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II. QMAX u ...
- BZOJ - 1036 树的统计Count (树链剖分+线段树)
题目链接 #include<bits/stdc++.h> using namespace std; typedef long long ll; ,inf=0x3f3f3f3f; ],mx[ ...
- BZOJ 1036 树的统计-树链剖分
[ZJOI2008]树的统计Count Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 12904 Solved: 5191[Submit][Status ...
- Codevs 2460 == BZOJ 1036 树的统计
2460 树的统计 2008年省队选拔赛浙江 时间限制: 2 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 一棵树上有n个节点,编号分别为1 ...
- BZOJ 1036 树的统计
Description 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w.我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II. Q ...
- [BZOJ1036] [ZJOI2008] 树的统计Count (LCT)
Description 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w.我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II. Q ...
- bzoj1036 [ZJOI2008]树的统计Count——LCT
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1036 LCT水题! 然而没有1A(咬牙)! 注意值有负数,所以取 max 的话要把作为“哨兵 ...
随机推荐
- Group By查询
1.概述 “Group By”从字面意义上理解就是根据“By”指定的规则对数据进行分组,所谓的分组就是将一个“数据集”划分成若干个“小区域”,然后针对若干个“小区域”进行数据处理. 2.原始表 3.简 ...
- Haproxy 代理
一:安装haproxy 1:解压 编译 安装 tar zxf haproxy-1.7.9.tar.gz cd haproxy-1.7.9 uname -e make TARGET=linux ...
- java:struts框架4(Ajax)
1.Ajax: 先导入jar包: struts.xml: <?xml version="1.0" encoding="UTF-8"?> <!D ...
- java里null强转为某个类会报错吗?
1.定义一个User类如下: /** * @author lizhibiao * @date 2018/11/27 17:21 */public class User{ private String ...
- 依赖注入——angular
在Angular中创建一个对象时,需要依赖另一个对象,这是代码层的一种依赖关系,当这种依赖被声明后,Angular通过injector注入器将所依赖的对象进行注入操作. 一.依赖注入的原理 看下面的示 ...
- python学习之面向对象(三)
6.8 类的结构细化 6.8.1 类的私有成员 类中的私有成员包括:私有类的属性,私有对象属性,私有类方法 私有静态属性 类的内部可以访问,类的外部不可以访问,派生类中不可以访问 class A: _ ...
- 【VS开发】【图像处理】自动白平衡(AWB)算法---色温曲线
原文地址:http://blog.csdn.net/wzwxiaozheng/article/details/38434391 白平衡算法---色温曲线 本文大体讲解了白平衡的算法流程,适用于想了解和 ...
- IntelliJ IDEA将导入的项目转成maven项目
今天导入公司的maven项目,发现结构不对劲,难怪说为啥一直不能部署tomcat,后面百度才了解到导入这个项目还不是maven项目,首先需要把这个项目变成maven项目,然后再进行tomcat的部署下 ...
- (5.1.4)引擎管理——SSMS管理使用小技巧
目录 [1]自带报表 [2]对象管理器详细信息 [3]日志 [4]活动监视器 [1]自带报表 无论是数据库.服务器实例.还是代理等等都可以有标准报表 [2]对象管理器详细信息 利用改方式,可以很有效的 ...
- Nmap 在 WSL 中工作不正常
Problem binding to interface , errno: 92 socket_bindtodevice: Protocol not available Problem binding ...