Educational Codeforces Round 6 E. New Year Tree

Windows事件ID 10010报错:DCOM注册超时与Game Bar修复指南 DCOM(分布式组件对象模型)是Windows中用于跨进程组件通信的核心机制,其注册超时问题常表现为事件ID 10010报错。当Game Bar的PresenceWriter组件因权限配置不当、组件损坏或开机资源竞争而无法在限定时间内向DCOM注册时,系统会记录该错误,并可能伴随DCOM服务主机CPU占用升高或游戏栏功能异常。理解DCOM激活原理与Network Service账户权限,有助于从权限修复、组件重注册及开机时序优化等层面系统排查。本文针对不同Windows版本,提供从静默处理到根治的完整方案, 阅读详情

【题意】给定N=4*1e5个节点的树,有Q=4*1e5个操作,每次可以选择一个节点,把他的儿子结点全部染成一种颜色,还有就是查询某个节点最后有多少个颜色。

【解题方法】其实这题应该算是区间染色加DFS的板子题了。我用的是bitset压位来解决了区间染色问题。具体看代码吧。

【AC代码】

#include <cstdio>
#include <cstring>
#include <bitset>
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn=4e5+10;
int n,q,col[maxn];
/********************************DFS序部分*********************************/
vector<int>G[maxn];
int st[maxn],en[maxn],dfn;
void init(){
    for(int i=1; i<=n; i++) G[i].clear();
}
void dfs(int u,int fa){
    st[u]=++dfn;
    for(int i=0; i<(int)G[u].size(); i++){
        int v=G[u][i];
        if(v!=fa) dfs(v,u);
    }
    en[u]=dfn;
}
/********************************线段树部分***********************************/
struct node{
    int l,r,lazy;
    bitset<61>c;
    node(){}
    void setColor(int col){
        c.reset();
        c[col]=1;
    }
    node(int l,int r):l(l),r(r){c.reset();}
}Tree[maxn*4];
node operator+(node a,node b){
    node ret(a.l,b.r);
    ret.c=a.c|b.c;
    return ret;
}
void pushup(int rt){
    Tree[rt].c=Tree[rt*2].c|Tree[rt*2+1].c;
}
void pushdwon(int rt){
    if(Tree[rt].lazy){
        Tree[rt*2].setColor(Tree[rt].lazy);
        Tree[rt*2+1].setColor(Tree[rt].lazy);
        Tree[rt*2].lazy=Tree[rt*2+1].lazy=Tree[rt].lazy;
        Tree[rt].lazy=0;
    }
}
void Build(int l,int r,int rt){
    Tree[rt].l=l,Tree[rt].r=r;
    Tree[rt].lazy=0;
    if(l==r) return ;
    int mid=(l+r)/2;
    Build(l,mid,rt*2);
    Build(mid+1,r,rt*2+1);
}
void update(int L,int R,int c,int rt){
    if(L==Tree[rt].l&&Tree[rt].r==R){
        Tree[rt].lazy=c;
        Tree[rt].setColor(c);
        return ;
    }
    pushdwon(rt);
    int mid=(Tree[rt].l+Tree[rt].r)/2;
    if(R<=mid) update(L,R,c,rt*2);
    else if(L>mid) update(L,R,c,rt*2+1);
    else{
        update(L,mid,c,rt*2);
        update(mid+1,R,c,rt*2+1);
    }
    pushup(rt);
}
node queryans(int L,int R,int rt){
    if(L==Tree[rt].l&&Tree[rt].r==R){
        return Tree[rt];
    }
    pushdwon(rt);
    int mid=(Tree[rt].l+Tree[rt].r)/2;
    if(R<=mid) return queryans(L,R,rt*2);
    else if(L>mid) return queryans(L,R,rt*2+1);
    else{
        return queryans(L,mid,rt*2)+queryans(mid+1,R,rt*2+1);
    }
}
int main()
{
    scanf("%d%d",&n,&q);
    for(int i=1; i<=n; i++) G[i].clear();
    for(int i=1; i<=n; i++) scanf("%d",&col[i]);
    Build(1,n,1);
    //puts("success");
    for(int i=1; i<n; i++){
        int u,v;
        scanf("%d%d",&u,&v);
        G[u].push_back(v);
        G[v].push_back(u);
    }
    //dfs序
    dfn=0;
    dfs(1,-1);
    int x,y;
    for(int i=1; i<=n; i++) update(st[i],st[i],col[i],1);
    while(q--){
        int op;
        scanf("%d",&op);
        if(op==1){
            scanf("%d%d",&x,&y);
            update(st[x],en[x],y,1);
        }else{
            scanf("%d",&x);
            node ans=queryans(st[x],en[x],1);
            int sum=ans.c.count();
            printf("%d\n",sum);
        }
    }
}


别再死记硬背了!用Wireshark抓包实战,5分钟搞懂GRE、L2TP、IPsec的区别 本文通过Wireshark抓包实战,详细解析GRE、L2TP和IPsec三大隧道协议的核心差异与应用场景。从报文结构到配置示例,帮助网络工程师快速掌握这些协议的本质,提升VPN部署与故障排查能力。特别适合准备HCIP认证的工程师深化理解。 阅读详情

相关推荐

【Unity Animation 2D】从零到一:骨骼绑定与IK动画实战指南

本文详细介绍了Unity中2D骨骼绑定与IK动画的实战流程,从角色素材准备、骨骼系统创建到权重绘制和IK设置,逐步指导开发者掌握2D动画制作技巧。通过反向动力学(IK)技术,实现更自然的角色动画效果,适用于游戏开发和动画制作。

weixin_30430677的博客 372

Educational Codeforces Round 6 E. New Year Tree

题意 给出一个有根树,给出m个操作,操作1表示使得这一棵树的某一个节点的所有子树染上某一种颜色,操作2表示查询这个节点及其子树的颜色数量。 思路 对于一颗有根树来说,我们依靠dfs序就可以变换成为一个有序的序列,所以根据dfs序可以建立线段树。 对于线段树的操作,更新的话,区间更新,推lazy标记,问题是怎么去统计颜色的数量,这也关系到我们将怎么去推lazy标记。 如果单纯的修改,变换tree[r...

weixin_44019404的博客 135

为什么你的XGBoost多分类效果不如预期?可能是这5个参数没调对

本文深度剖析了XGBoost模型在处理多分类问题时效果不佳的五大关键参数陷阱。针对多分类问题的独特性,文章提供了max_depth、learning_rate、采样参数及正则化参数等核心参数的量化调整策略与诊断方法,帮助开发者精准调优,有效提升模型在各类别上的均衡性能与泛化能力。

weixin_29182481的博客 296

Educational Codeforces Round 6 E. New Year Tree CF620E

因为最多只有60种颜色所以用ll状压一下 对树dfs序构建一棵线段树 然后区间更新区间查询#include <iostream> #include <algorithm> #include <sstream> #include <string> #include <queue> #include <cstdio> #include <map> #include <set> #include <u

sb的博客 482

克里金插值(Kriging)在MATLAB中的实现(克里金工具箱)

一,直接献上克里金插值MATLAB工具箱 链接:https://pan.baidu.com/s/1p0lt2G8KQ-els7Dyw5jPFg 提取码:wcss 下载后将该程序添加到MATLAB安装文件夹中的/toolbox下,然后在设置路径中添加该程序文件为默认路径即可调用程序。 资源中内附程序使用说明PDF。 二、本人实际操作代码如下所示,标注如下 load data1 %载入数据 %模型参...

qq_40937675的博客 6万+

FT601Q芯片深度解析:从USB3.0引脚定义到FPGA FIFO协议实战选型

本文深入解析FT601Q芯片在USB3.0接口设计与FPGA协议栈开发中的应用,详细介绍了USB3.0引脚定义、FT601Q芯片架构、245同步FIFO模式及硬件设计要点,帮助工程师实现高速数据传输系统。

weixin_30607659的博客 447

Educational Codeforces Round 6 E. New Year Tree(DFS序+线段树)

题目链接:点击打开链接 题意:给你一棵树,编号1~n,告诉你根结点是1。 每次有两个操作: 1,将以v为根的子树的结点全部染成颜色c 2,问以v为根的紫书的结点的颜色种类。 思路:如果这是一条线段的话, 那么这就是线段树的区间更新问题,而现在是一棵树。 因为告诉了根结点是1, 那么这棵树的任意一个结点的子树就是确定的, 所以我们可以用DFS的先序遍历,将所有结点重新编号,因为先序遍历的话

AC_Arthur的专栏 1243

深入解析SVPWM七段式与五段式调制的电压波形差异及优化策略

本文深入解析了SVPWM七段式与五段式调制在相电压和线电压波形上的核心差异。七段式波形对称、谐波含量低,适合追求静音与性能的场景;五段式开关次数少、损耗低,适用于对效率与散热要求高的应用。文章提供了基于谐波与损耗权衡的优化策略与选型指南。

weixin_29216957的博客 440

coderforce Educational Codeforces Round 6 E.New Year Tree

E. New Year Tree time limit per test 3 seconds memory limit per test 256 megabytes input standard input output standard output The New Year holidays are over, but Resha doesn't wa

秋名山 340

微信小程序:errno: 1500104, errCode: 10008, errMsg: “writeBLECharacteristicValue:fail:system error, status

微信小程序errno: 1500104, errCode: 10008, errMsg: "writeBLECharacteristicValue:fail:system error, status: UNKNOWN (239)"微信小程序调用蓝牙API,wx.writeBLECharacteristicValue()报错,微信小程序蓝牙写入错误,在开发uniapp微信小程序蓝牙通信功能时报错,蓝牙开发设备控制核心api,微信小程序调用蓝牙API “wx.writeBLECharacteristicValu

✅ 精选推荐文章 3930

【fpdlink显示】DS90UB948关于941连接948 GPIO调试问题

1. 前言 使用一个941连接2 948显示: 941的GPIO0/1/2/3到前948的GPIO0/1/2/3和941的D_GPIO0/1/2/3到948的GPIO0/1/2/3。 设置gpio3输出,则941的D_GPIO3设置高,而948的gpio3设置不高; 但设置gpio3输入后,看到941的D_GPIO3跟随948的gpio3变化。 2. 原理图连接 3. 测试代码 static int du90ub941_enable_port(struct goodix_ts_d

jzwjzw19900922的博客 2556

Educational Codeforces Round 6 E. New Year Tree(dfs序线段树)

题意: 给定N≤4×105的一颗树,Q≤4×105次询问给定N\le 4\times10^5的一颗树, Q\le 4\times10^5次询问 1.把u这颗子树的颜色全部变成c,c≤601. 把u这颗子树的颜色全部变成c,c\le 60 2.查询u这颗子树内有多少种不同的颜色2. 查询u这颗子树内有多少种不同的颜色 分析: 首先根据dfs序,树形转线形,由于c只有60,然后每个节

TaoSama's Microcosm 506

【用unity实现100个游戏之1】制作类元气骑士、挺进地牢——俯视角射击游戏多种射击效果(一)(附源码)

俯视角射击游戏)是一类以俯视视角进行游戏展示的射击游戏。在这种游戏中,玩家控制着一个角色或载具,从俯视的角度上方观察游戏世界,并与敌人进行战斗。这种视角使玩家能够有更好的全局观察和策略性,同时也强调快速反应和精确射击。视角:俯视角度可以是固定的,也可以随着玩家角色的移动而变化,但都允许玩家以全局视角观察整个战场,有利于制定战略和规划行动。射击:玩家通常需要使用各种武器来与敌人进行战斗,包括枪械、爆炸物等。射击动作依赖于玩家的反应速度和准确性。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 7833

【Educational Codeforces Round 6E】【线段树 dfs序】New Year Tree 子树颜色修改子树颜色数

E. New Year Tree time limit per test 3 seconds memory limit per test 256 megabytes input standard input output standard output The New Year holidays are over, but Resha do

snowy_smile的博客 1260

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Educational Codeforces Round 6 E. New Year Tree dfs+线段树

题目链接:http://codeforces.com/contest/620/problem/E E. New Year Tree time limit per test 3 seconds memory limit per test 256 megabytes input standard input output standard outp...

weixin_30341735的博客 119

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Educational Codeforces Round 6 620E. New Year Tree(DFS序+线段树)

题目链接:点击打开链接 题意:给你一棵树,编号1~n,告诉你根结点是1。 每次有两个操作: 1,将以v为根的子树的结点全部染成颜色c 2,问以v为根的紫书的结点的颜色种类。 思路:如果这是一条线段的话, 那么这就是线段树的区间更新问题,而现在是一棵树。 因为告诉了根结点是1, 那么这棵树的任意一个结点的子树就是确定的, 所以我们可以用DFS的先序遍历,将所有结点重新编号,因为先序遍历的话, 任意...

橘嘉禾 95

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Educational Codeforces Round 6 E. New Year Tree(dfs序+线段树+状态压缩)(妙题)

题目链接 题意:给定一棵树,给你两个操作,一是把v和它的子树的所有数变成x,二是查询v和它的子树中不同的数有几个。 思路:很妙的解法,由于值不超过60,所有之间可以用二进制或操作来判断不同的数的个数,比如2和3,我就变成100和1000,相或后就变成1100,只要查看最后的结果有几个1就是不同的数的个数,至于子树的话用线段树+dfs序就可以,线段树pushup的时候相或就可以了。 #inclu...

qq_42479630的博客 194

数据结构(线段树):Educational Codeforces Round 6 620E. New Year Tree

E. New Year Tree time limit per test 3 seconds memory limit per test 256 megabytes input standard input output standard output The New Year holidays are over, but Resha do...

weixin_30832983的博客 129

Codeforces edu 6. E New Year Tree 图论 线段树

题目链接:http://codeforces.com/contest/620/problem/E 题目来源:Educational Codeforces Round 6 简要题意:给定一棵树,可以给节点子树染色,可以询问一个节点子树有多少不同颜色。 第二道线段树

ned_chu的博客 692

模拟退火算法 POJ 2420

【前言】先说一说什么是模拟退火,感觉很多地方都讲得挺神秘的,其实非常简单。 【模拟退火算法】转自点击打开链接 1. 模拟退火算法认识      爬山算法也是一个用来求解最优化问题的算法,每次都向着当前上升最快的方向往上爬,但是初始化不同可能    会得到不同的局部最优值,模拟退火算法就可能跳出这种局部最优解的限制。模拟退火算法是模拟热力学系统    中的退火过程。在退火过程中是

I good vegetable a! 3076

POJ 3074 DLX精确覆盖求解数独问题

【解题方法】             DLX解决9*9的数独问题,转化为729*324的精确覆盖问题             行:                   一共9 * 9 * 9 == 729行。一共9 * 9小格,每一格有9种可能性(1 - 9),每一种可能都对应着一行。             列:                   一共(9 + 9 + 9)

I good vegetable a! 1555

51 nod 1376 最长递增子序列的数量(二维偏序cdq)

【题意】求一个序列中LCS的数量? 【解题方法1】f[i]:以第i个数结尾的LCS的长度,和该长度的LIS的数量,转移的话,显然f[i].first=max(f[j].first)+1,j 【AC代码】 //51nod //LCS CDQ/BIT #include #include #include #include #include using namespace std; co

I good vegetable a! 1363

BZOJ 4653: [Noi2016]区间

Description 在数轴上有 n个闭区间 [l1,r1],[l2,r2],...,[ln,rn]。现在要从中选出 m 个区间,使得这 m个区间共同包含至少一个位置。换句话说,就是使得存在一个 x,使得对于每一个被选中的区间 [li,ri],都有 li≤x≤ri。 对于一个合法的选取方案,它的花费为被选中的最长区间长度减去被选中的最短区间长度。区间 [li,ri] 的长度定义为 ri−

I good vegetable a! 1181

线段树离线 SWUST OJ 2459 Submissions of online judge

【题意】维护一个区间不同的数的个数。 【解题方法】首先我们把所有查询区间记录下来,然后按照区间的右值排序,接着从左到右把每一个数更新到线段树中,并记录它出现的位置。如果一个数已经出现过,那么我们就把他上次出现的位置的值置为0,并更新它出现的位置。因为我们的查询区间是按右值排序的,因此把过去重复出现的数字置为0不会影响结果。当更新到某个区间的右值时,我们就查询一次该区间的答案,并把答案记下来。最后

I good vegetable a! 1098

Uva Recurrences 矩阵优化

Consider recurrent functions of the following form:f(n) = a1f(n − 1) + a2f(n − 2) + a3f(n − 3) + … + adf(n − d), for n > d, where a1, a2, … , ad are arbitrary constants. A famous example is the Fibon

I good vegetable a! 1075
上一篇: BZOJ 3262 陌上花开
下一篇: HDU.4605 Magic Ball Game
just_sort
博客等级 码龄11年 2357粉丝 1667原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值