New Year Tree CodeForces -620E
这个题有一个技巧:把颜色压到一个long long 上。
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<vector>
using namespace std;
typedef long long LL;
LL lft[],c[];
vector<int> e[];
int n,m;
int pp[],lp[],rp[],len;
void dfs(int u,int fa)
{
pp[++len]=u;lp[u]=len;
for(auto& v:e[u])
if(v!=fa)
dfs(v,u);
rp[u]=len;
}
#define mid ((l+r)>>1)
#define lc (num<<1)
#define rc (num<<1|1)
LL dat[],setv[];
void build(int l,int r,int num)
{
setv[num]=-;
if(l==r) {dat[num]=c[pp[l]];return;}
build(l,mid,lc);build(mid+,r,rc);
dat[num]=dat[lc]|dat[rc];
}
int L,R;LL x;
void pd(int l,int r,int num)
{
if(setv[num]!=-)
{
dat[lc]=setv[num];dat[rc]=setv[num];
setv[lc]=setv[num];setv[rc]=setv[num];
setv[num]=-;
}
}
void change(int l,int r,int num)
{
if(L<=l&&r<=R) {dat[num]=x;setv[num]=x;return;}
pd(l,r,num);
if(L<=mid) change(l,mid,lc);
if(mid<R) change(mid+,r,rc);
dat[num]=dat[lc]|dat[rc];
}
LL query(int l,int r,int num)
{
if(L<=l&&r<=R) return dat[num];
pd(l,r,num);
LL ans=;
if(L<=mid) ans|=query(l,mid,lc);
if(mid<R) ans|=query(mid+,r,rc);
return ans;
}
int main()
{
int i,a,b,v,idx;
lft[]=;
for(i=;i<=;i++) lft[i]=lft[i-]<<;
scanf("%d%d",&n,&m);
for(i=;i<=n;i++) scanf("%lld",&c[i]),c[i]=lft[c[i]];
for(i=;i<n;i++)
{
scanf("%d%d",&a,&b);
e[a].push_back(b);e[b].push_back(a);
}
dfs(,);
build(,n,);
while(m--)
{
scanf("%d",&idx);
if(idx==)
{
scanf("%d%lld",&v,&x);x=lft[x];
L=lp[v];R=rp[v];change(,n,);
}
else if(idx==)
{
scanf("%d",&v);L=lp[v];R=rp[v];
printf("%d\n",__builtin_popcountll(query(,n,)));
}
}
return ;
}
New Year Tree CodeForces -620E的更多相关文章
- Z - New Year Tree CodeForces - 620E 线段树 区间种类 bitset
Z - New Year Tree CodeForces - 620E 这个题目还没有写,先想想思路,我觉得这个题目应该可以用bitset, 首先这个肯定是用dfs序把这个树转化成线段树,也就是二叉树 ...
- Vasya and a Tree CodeForces - 1076E(线段树+dfs)
I - Vasya and a Tree CodeForces - 1076E 其实参考完别人的思路,写完程序交上去,还是没理解啥意思..昨晚再仔细想了想.终于弄明白了(有可能不对 题意是有一棵树n个 ...
- Distance in Tree CodeForces - 161D
Distance in Tree CodeForces - 161D 题意:给一棵n个结点的树,任意两点之间的距离为1,现在有点u.v,且u与v的最短距离为k,求这样的点对(u,v)的个数((u,v) ...
- Water Tree CodeForces 343D 树链剖分+线段树
Water Tree CodeForces 343D 树链剖分+线段树 题意 给定一棵n个n-1条边的树,起初所有节点权值为0. 然后m个操作, 1 x:把x为根的子树的点的权值修改为1: 2 x:把 ...
- Codeforces 620E New Year Tree(DFS序 + 线段树)
题目大概说给一棵树,树上结点都有颜色(1到60),进行下面两个操作:把某结点为根的子树染成某一颜色.询问某结点为根的子树有多少种颜色. 子树,显然DFS序,把子树结点映射到连续的区间.而注意到颜色60 ...
- CodeForces 620E New Year Tree
线段树+位运算 首先对树进行DFS,写出DFS序列,记录下每一个节点控制的区间范围.然后就是区间更新和区间查询了. 某段区间的颜色种类可以用位运算来表示,方便计算. 如果仅有第i种颜色,那么就用十进制 ...
- CodeForces 620E New Year Tree(线段树的骚操作第二弹)
The New Year holidays are over, but Resha doesn't want to throw away the New Year tree. He invited h ...
- CodeForces 620E:New Year Tree(dfs序+线段树)
E. New Year Treetime limit per test3 secondsmemory limit per test256 megabytesinputstandard inputout ...
- Codeforces 620E New Year Tree(线段树+位运算)
题目链接 New Year Tree 考虑到$ck <= 60$,那么用位运算统计颜色种数 对于每个点,重新标号并算出他对应的进和出的时间,然后区间更新+查询. 用线段树来维护. #includ ...
随机推荐
- CentOS 7下安装Logstash ELK Stack 日志管理系统(下)
修改防火墙,对外开放tcp/5601 [root@elk elk]# firewall-cmd --permanent --add-port=5601/tcpSuccess[root@elk elk] ...
- CentOS系统如何设置服务开机自动运行
centos安装好apache,mysql等服务器程序后,并没有设置成开机自动启动的,为避免重启后还要手动开启web等服务器,还是做下设置好,其实设置很简单,用chkconfig命令就行了.例如要开机 ...
- CDN具体解释(篇二)
还有还有一个问题就是全部的内容都放在同一个地方.假设我们的server在芝加哥,那么美国中西部的人们訪问server的响应时间和用户体验就比香港.德国.南非以及佛罗里达州的用户好.由于那些用户离ser ...
- payload和formData有什么不同?
最近做项目的时候,在通过post请求向服务端发送数据的时候,请求失败了.错误信息如下: 返回的400(bad request)错误,说明客户端这边发送的请求是有问题的. 和通过jquery中的ajax ...
- HDU 1824 Let's go home (2-SAT判定)
Let's go home Time Limit: 10000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- mongodb数据出现undefined如何查询
某些字段出现undefined,该如何查询? 如下: db.getCollection('license').find({"holder_code":{$type:"un ...
- css hack原理
近期看了几篇关于css hack的文章,认为不错整理一下. css hack非常多人不理解它的原理,事实上大家都知道对于不同的浏览器,CSS的解析程度不一样.因此会导致生成的页面效果不一样:特别是对于 ...
- cocos2d-x调用scheduleUpdate()不执行update()方法的解决办法【转】
原文地址:http://blog.csdn.net/somestill/article/details/9699377 前两天使用到每帧都更新动画的scheduleUpdate()方法,但通过cclo ...
- 辛星浅析一次ajax的实现过程
说到ajax,那绝对是一个老生常谈的话题,近些年ajax技术的使用颇为盛行. 以下我们就以jQuery为例来从一个真实的项目中看一下ajax的实例. 首先是前端页面,这个页面我们使用的是bootstr ...
- bzoj3330: [BeiJing2013]分数
口胡 题目hint都给你是一个三分函数了 还不会上三分套三分吗 exp函数又卡 精度又卡 什么sb毒瘤题 浪费时间