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用户一定对软件包管理器不会陌生.通过软件包管理器,你可以通过 ...
随机推荐
- linux 进程学习笔记-共享内存
如果能划定一块物理内存,让多个进程都能将该内存映射到其自身虚拟内存空间的话,那么进程可以通过向这块内存空间读写数据而达到通信的目的.另外,和消息队列不同的是,共享的内存在用户空间而不是核空间,那么就不 ...
- OpenCV——高斯模糊与毛玻璃特效
// define head function #ifndef PS_ALGORITHM_H_INCLUDED #define PS_ALGORITHM_H_INCLUDED #include < ...
- 发挥到极致的Asterisk SS7 解决方案【转】
基于SS7的开源解决方案在国内已经安装了很多.很多用户都使用chan_ss7 开源协议栈作为呼叫中心,400电话,计费结算的系统.随着国内对开源Asterisk的认可程度越来越高. Asterisk让 ...
- CRC16算法之一:CRC16-CCITT-FALSE算法的java实现
CRC16算法系列文章: CRC16算法之一:CRC16-CCITT-FALSE算法的java实现 CRC16算法之二:CRC16-CCITT-XMODEM算法的java实现 CRC16算法之三:CR ...
- mac hosts
1 在命令行中输入:sudo vim /etc/hosts. 2 输入开机密码,就可打开文件.按下键盘i,对文件进入可编辑状态. 3 修改完,先按esc退出编辑模式,之后,按shift+:,再按wq来 ...
- bzoj1042硬币购物——递推+容斥
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1042 递推,再用容斥原理减掉多余的,加上多减的……(dfs)即可. 代码如下: #includ ...
- POJ1330(LCA入门题)
Nearest Common Ancestors Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 23388 Accept ...
- YOLO3训练widerface数据集
因为YOLO3速度精度都很棒,所以想训练一下人脸模型,废话不多,进入正题 1写所有的配置文件 1.1 YOLO3-face.cfg 个人感觉YOLO的配置文件骑士和caffe差不多 在cfg/YOLO ...
- Python之文件输入输出,
文件输入与输出 • 打开文件返回文件对象 – file_object=open(file_name,access_mode='r') • 关闭文件对象 – file_object.close() ...
- 5.zip隐写术
首先分析pcapng,来得到flag. 先亮出下载地址:http://ctf5.shiyanbar.com/misc/LOL/LOL.pcapng 由于这是.pcapng,需要下载 wireshark ...