NOI2015软件包管理器 树剖线段树
题目:
一棵树,兹磁
1.查询根到一个点的染色点数并全染好
2.查询子树内染色点数并把颜色洗掉
树剖裸题,丝毫不虚(为什么我考试的时候碰不到这种好题呢)好像20min写完搞定
#include <bits/stdc++.h>
#define mid (l+r>>1)
using namespace std;
int TIME,n,m,t;char ch;
int size[],fir[],nex[],top[];
int pos[],en[],fa[];
int fz[],sum[];
int dfs(int now)
{
size[now]=;
for(int i=fir[now];i;i=nex[i])
size[now]+=dfs(i);
return size[now];
}
void pou(int now,int tp)
{
top[now]=tp;pos[now]=++TIME;
int best=fir[now];
for(int i=fir[now];i;i=nex[i])
if(size[i]>size[best]) best=i;
if(best)
pou(best,tp);
for(int i=fir[now];i;i=nex[i])
if(i!=best) pou(i,i);
en[now]=TIME;
}
void down(int now,int l,int r)
{
if(fz[now]>-)
{
fz[now<<]=fz[now<<|]=fz[now];
sum[now<<]=(mid-l+)*fz[now];
sum[now<<|]=(r-mid)*fz[now];
fz[now]=-;
}
}
int que(int now,int l,int r,int x,int y)
{
if(l==x && r==y)
return sum[now];
down(now,l,r);
int ret=;
if(x<=mid)
ret+=que(now<<,l,mid,x,min(mid,y));
if(y>mid)
ret+=que(now<<|,mid+,r,max(mid+,x),y);
return ret;
}
void change(int now,int l,int r,int x,int y,int z)
{
if(l==x && r==y)
{
sum[now]=z*(r-l+);
fz[now]=z;
return;
}
down(now,l,r);
if(x<=mid)
change(now<<,l,mid,x,min(mid,y),z);
if(y>mid)
change(now<<|,mid+,r,max(mid+,x),y,z);
sum[now]=sum[now<<]+sum[now<<|];
}
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%d",&fa[i]),++fa[i],nex[i]=fir[fa[i]],fir[fa[i]]=i;
dfs();pou(,);
scanf("%d",&m);
for(int i=;i<=m;i++)
{
for(ch=getchar();!isalpha(ch);ch=getchar());
if(ch=='i')
{
for(int i=;i<=;i++)
getchar();
scanf("%d",&t);++t;
int ret=;
for(;t;t=fa[top[t]])
ret+=pos[t]-pos[top[t]]+-que(,,n,pos[top[t]],pos[t]),
change(,,n,pos[top[t]],pos[t],);
printf("%d\n",ret);
}
if(ch=='u')
{
for(int i=;i<=;i++)
getchar();
scanf("%d",&t);++t;
printf("%d\n",que(,,n,pos[t],en[t]));
change(,,n,pos[t],en[t],);
}
}
return ;
}
NOI2015软件包管理器 树剖线段树的更多相关文章
- bzoj 4196 [Noi2015]软件包管理器 (树链剖分+线段树)
4196: [Noi2015]软件包管理器 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 2852 Solved: 1668[Submit][Sta ...
- BZOJ 4196: [Noi2015]软件包管理器 [树链剖分 DFS序]
4196: [Noi2015]软件包管理器 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1352 Solved: 780[Submit][Stat ...
- BZOJ_4196_[Noi2015]软件包管理器_树链剖分
BZOJ_4196_[Noi2015]软件包管理器_树链剖分 题意: Linux用户和OSX用户一定对软件包管理器不会陌生.通过软件包管理器,你可以通过一行命令安装某一个软件包,然后软件包管理器会帮助 ...
- 【BZOJ4196】[Noi2015]软件包管理器 树链剖分
[Noi2015]软件包管理器 树链剖分 Description Linux用户和OSX用户一定对软件包管理器不会陌生.通过软件包管理器,你可以通过一行命令安装某一个软件包,然后软件包管理器会帮助你从 ...
- 洛谷 P2146 [NOI2015]软件包管理器 树链剖分
目录 题面 题目链接 题目描述 输入输出格式 输入格式: 输出格式: 输入输出样例 输入样例#1: 输出样例#1: 输入样例#2: 输出样例#2: 说明 说明 思路 AC代码 总结 题面 题目链接 P ...
- Bzoj 4196: [Noi2015]软件包管理器 树链剖分
4196: [Noi2015]软件包管理器 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 721 Solved: 419[Submit][Statu ...
- [BZOJ4196][NOI2015]软件包管理器(树链剖分)
4196: [Noi2015]软件包管理器 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 2166 Solved: 1253[Submit][Sta ...
- 洛谷 P2146 [NOI2015]软件包管理器 解题报告
P2146 [NOI2015]软件包管理器 题目描述 Linux用户和OSX用户一定对软件包管理器不会陌生.通过软件包管理器,你可以通过一行命令安装某一个软件包,然后软件包管理器会帮助你从软件源下载软 ...
- [Luogu 2146] NOI2015 软件包管理器
[Luogu 2146] NOI2015 软件包管理器 树剖好题. 通过对题目的分析发现,这些软件构成一棵树,\(0\) 是树根. 每下载一个软件,需要下载根到这个软件的路径上的所有软件: 每卸载一个 ...
- [NOI2015]软件包管理器
4621 [NOI2015]软件包管理器 题目等级 : 钻石 Diamond 题目描述 Description Linux用户和OSX用户一定对软件包管理器不会陌生.通过软件包管理器,你可以通过 ...
随机推荐
- malloc和new的区别是什么?
http://zhidao.baidu.com/link?url=iUDUZeJtj1o12PvUETLlJgvAMqzky5HxGCJRGnULpsO8HdWAdjKkQqGCJ9-o-aTu8NP ...
- display:inline-bock的注意
前端当一组元素设置为display:inline-block;时,每个元素之间的回车会被作为一个空格.
- 一些rtsp实现的开源代码
* live.com C/S C++ http://www.live555.com * darwin S C++ http://www.opensource.a ...
- 【HDU 6126】Give out candies 最小割
题意 有$n$个小朋友,给每个人分$1~m$个糖果,有k个限制 限制形如$(x,y,z)$ 表示第$x$个人分到的糖数减去第$y$个人分到的糖数不大于$z$,给第$i$个人$j$颗糖获 ...
- listen 66
Frog Species Found in Big Apple Scientists discover new species all the time—on the order of 15,000 ...
- 一个坑:sql中问号(?)传参和 美元符号传参(${})的区别
? 可能会把参数加一对引号,不忽略前后空格? ${}是字符串拼接,好处是字符串前后的空格会被忽略... 但拼接有可能导致SQL注入
- darknet YOLOv2安装及数据集训练
一. YOLOv2安装使用 1. darknet YOLOv2安装 git clone https://github.com/pjreddie/darknetcd darknetmake或到网址上下载 ...
- NO1:在Windows端安装SecureCRT来连接Linux
正常情况下都不会直接在Linux服务端进行操作,实际使用服务器和工作电脑不会在同一个地方,也不允许在服务器操作. 我这里用SecureCRT 7.0来连接服务器.提供个下载,带注册机工具: http: ...
- [Poi2011] Meteors(从不知所措到整体二分)
Byteotian Interstellar Union (BIU) has recently discovered a new planet in a nearby galaxy. The plan ...
- POJ3693Maximum repetition substring (循环节)(后缀数组+RMQ)
The repetition number of a string is defined as the maximum number R such that the string can be par ...