Assign the task( HDU - 3974,DFS + 线段树)

微纳加工技术中的自对准硅化物(Silicide)工艺:关键步骤与应用场景解析 本文深入解析了微纳加工技术中的自对准硅化物(Silicide)工艺,详细介绍了其关键步骤与应用场景。从表面清洁、金属沉积到两步退火法,全面拆解工艺全流程,并探讨了不同技术节点下的工艺演进。文章还提供了实际应用中的问题排查方法和新兴技术对Silicide工艺的挑战,为芯片制造领域的工程师提供了实用参考。 阅读详情

一.题目链接:

HDU-3974

二.题目大意:

一个整数 n ,表示有 n 位员工.

之后 n - 1 行,给出员工 u 与 员工 v 之间的隶属关系.

有 2 种 m 次操作

C x:查询员工 x 当前的所做任务.

T x y:将员工 x 的当前任务改为 y.

当员工 x 做任务 y 时,员工 x 的员工也会同时做任务 y,以及员工 x 的员工的员工。。。

三.分析:

想要用线段树,可不知道怎么建立.

这个时候就要用到 DFS 来标号了

即用 DFS 来记录员工 x 的管辖范围.

之后就是线段树的基本操作了.

四.代码实现:

#include <set>
#include <map>
#include <ctime>
#include <queue>
#include <cmath>
#include <stack>
#include <vector>
#include <cstdio>
#include <sstream>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#define eps 1e-6
#define pi acos(-1.0)
#define ll long long int
using namespace std;

const int M = (int)5e4;

struct node
{
    int l;
    int r;
    int w;
    bool f;
}tree[M * 4 + 5];

int cnt;
int ans;
int st[M + 5];
int ed[M + 5];
bool vis[M + 5];
vector <int> vec[M + 5];

void init(int n)
{
    cnt = 0;
    for(int i = 1; i <= n; ++i)
    {
        vis[i] = 0;
        vec[i].clear();
    }
}

void dfs(int k)
{
    cnt++;
    st[k] = cnt;
    int len = vec[k].size();
    for(int i = 0; i < len; ++i)
        dfs(vec[k][i]);
    ed[k] = cnt;
}

void build(int k, int l, int r)
{
    tree[k].l = l;
    tree[k].r = r;
    tree[k].w = -1;
    tree[k].f = 0;
    if(l == r)
        return;
    int mid = (l + r) / 2;
    build(k * 2, l, mid);
    build(k * 2 + 1, mid + 1, r);
}

void push(int k)
{
    tree[k * 2].f = tree[k * 2 + 1].f = 1;
    tree[k * 2].w = tree[k * 2 + 1].w = tree[k].w;
    tree[k].f = 0;
}

void query(int k, int l, int r, int x)
{
    if(l == r)
    {
        ans = tree[k].w;
        return;
    }
    if(tree[k].f)
        push(k);
    int mid = (l + r) / 2;
    if(x <= mid)
        query(k * 2, l, mid, x);
    else
        query(k * 2 + 1, mid + 1, r, x);
}

void interver(int k, int l, int r, int a, int b, int c)
{
    if(l >= a && r <= b)
    {
        tree[k].w = c;
        tree[k].f = 1;
        return;
    }
    if(tree[k].f)
        push(k);
    int mid = (l + r) / 2;
    if(a <= mid)
        interver(k * 2, l, mid, a, b, c);
    if(mid < b)
        interver(k * 2 + 1, mid + 1, r, a, b, c);
}

int main()
{
    int T;
    scanf("%d", &T);
    for(int ca = 1; ca <= T; ++ca)
    {
        printf("Case #%d:\n", ca);
        int n;
        scanf("%d", &n);
        init(n);
        for(int i = 0; i < n - 1; ++i)
        {
            int u, v;
            scanf("%d %d", &u, &v);
            vec[v].push_back(u);
            vis[u] = 1;
        }
        for(int i = 1; i <= n; ++i)
        {
            if(!vis[i])
            {
                dfs(i);
                break;
            }
        }
        build(1, 1, cnt);
        int m;
        scanf("%d", &m);
        while((m--) > 0)
        {
            getchar();
            char dir;
            scanf("%c", &dir);
            if(dir == 'C')
            {
                int x;
                scanf("%d", &x);
                query(1, 1, cnt, st[x]);
                printf("%d\n", ans);
            }
            else if(dir == 'T')
            {
                int x, y;
                scanf("%d %d", &x, &y);
                interver(1, 1, cnt, st[x], ed[x], y);
            }
        }
    }
    return 0;
}

 

CMakeTestCCompiler.cmake错误解决 CMakeTestCCompiler.cmake错误解决欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 最近编译项目的时候,遇到一个cmake的错误,具体错误信息如下: /path-to-pr 阅读详情

相关推荐

如何在 Ubuntu 24.04 或 22.04 上安装和使用 GDebi

本文介绍了在Ubuntu 24.04上安装和使用GDebi的方法。GDebi是DPKG的轻量级替代品,能够自动解析并安装.deb包的依赖项。文章详细说明了系统更新、安装GDebi的步骤,并演示了通过GUI和CLI两种方式安装.deb包的操作流程。此外,还提供了验证安装和卸载包的方法。GDebi虽然非必需,但为用户提供了处理依赖项的另一种选择,适合需要安装本地Debian包的用户。

山岚的运维笔记 1981

Assign the task HDU - 3974 dfs序 +线段树

一、内容 There is a company that has N employees(numbered from 1 to N),every employee in the company has a immediate boss (except for the leader of whole company).If you are the immediate boss of someone...

Tizzi的博客 1068

STM32F407编译下载全流程:从CubeMX到HEX烧录

嵌入式固件开发中,编译与下载是连接代码与硬件的关键闭环。其本质是将高级语言描述的逻辑,经交叉编译(ARM GCC)、链接(ELF生成)、格式转换(HEX/BIN)后,通过调试接口(SWD/UART)写入MCU Flash存储器的过程。该流程涉及工具链协同、二进制格式特性(如Intel HEX的地址映射与无元数据设计)、启动模式(System Memory Bootloader)、Flash选项字节(RDP/WRP)等底层机制,直接决定固件可运行性与安全性。典型应用场景包括STM32F407开发板调试、量产固

weixin_28840811的博客 260

HDU 3974 Assign the task(DFS建树+线段树)

HDU 3974 Assign the taskThere is a company that has N employees(numbered from 1 to N),every employee in the company has a immediate boss (except for the leader of whole company).If you are the immedia...

GYH0730的博客 416

告别迷茫!新手如何从RTKLIB命令行程序入手,快速理解GNSS解算全流程

本文为GNSS新手提供RTKLIB命令行程序实战指南,重点介绍如何通过`rnx2rtkp`后处理解算工具快速掌握GNSS解算全流程。从环境搭建、程序编译到核心算法解析,帮助读者理解RTKLIB源码结构,并通过真实数据处理案例演示完整解算过程,是入门GNSS定位技术的实用教程。

weixin_42524226的博客 359

光学设计进阶:Zemax中的坐标断点与离轴系统优化

本文深入解析了Zemax中坐标断点的核心原理与实战应用,它是实现离轴光学系统设计的关键。文章通过比喻和实例,详细阐述了如何利用坐标断点作为“方向盘”来精确控制光学元件的偏心和倾斜,实现“前断后接”的局部坐标系变换,从而构建并优化无中心遮拦的离轴反射系统,避免光线失控。

3a9bq4r8t2y的博客 525

hdu3974-Assign the task(dfs序建线段树)

title: hdu3974-Assign the task(dfs序建线段树) date: 2019-05-28 15:08:01 categories: ACM tags: [ACM,算法] 今天做线段树的题碰到一个需要dfs序转化成建线段树,挺有意义的一道题 我的个人博客:https://www.kimiye.xyz 题目描述 There is a company that has ...

Flyyy‘s blog 460

在 ABAP 中把变量一次写对:深入理解 FINAL 内联声明与不可变变量

摘要:ABAP中的FINAL声明操作符用于定义不可变变量,强调"当前上下文中的唯一写位置",能有效防止变量被意外修改,提升代码健壮性和可读性。官方建议优先在单次赋值的场景使用FINAL替代DATA。其核心规则包括:1)写位置唯一但可多次执行(如循环内);2)不创建块级作用域;3)对引用变量仅约束引用本身而非对象内容。典型适用场景包括:结果值只读、输入快照保存和中间结果保护。例外情况如游标变量不适用,因需多次写操作。正确使用FINAL可显著降低代码维护风险。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1044

HDU - 3974 Assign the task (线段树 + dfs序)

HDU - 3974 题意:有个公司有一些关系,每个人(除了boss)都有且仅有一个上司,这就是一棵树的关系,然后会有一些操作,C i,询问第i个人现在的任务,T x y,把y任务给x, 给x相当于给x及他所有的下属,新任务会覆盖旧任务 思路:这是我写的第一个(除了联通图那些)需要用dfs序的题,最近有毒,wa到不敢相信自己.... 因为i节点的子树在dfs访问序列中肯定是连续的,所以可以把

shinimashzi 368

Android系统内存和性能关系的调研

摘要:本文分析了低内存导致性能问题的判断方法和评估思路。通过监控/proc/vmstat中的allocstall_normal、pageoutrun等指标可判断内存回收频率,当MemFree、MemAvailable和Cached均低于500MB时可能出现明显卡顿。全文通过实验和理论验证分析,回答因内存瓶颈导致性能问题的一些分析和解决的思路。

jidapenglin28的专栏 130

大疆FPGA/芯片开发工程师(A卷)笔试题(含详解)

大疆芯片开发岗A卷 一、单选题 1.下列关于多bit数据跨时钟域的处理思路,错误的有   A、发送方给出数据,接收方用本地时钟同步两拍再使用   B、发送方把数据写到异步fifo,接收方从异步fifo里读出   C、对于连续变化的信号,发送方转为格雷码发送,接收方收到后再转为二进制   D、发送方给出数据,发送方给出握手请求,接收方收到后回复,发送方撤销数据 2.对12.918做无损定点化,需要的最小位宽是多少位,位宽选择11位时的量化误差是多少   A、12位,0.0118   B、13位,0.0039

Mr.翟的博客 2万+

HDU-3974 Assign the task (dfs序+线段树)

链接 hdu-3974 题意: 给一颗树,每次给一个节点的所有子节点分配一个值,值会被覆盖,询问每次某个节点的值,若没有分配,输出-1; 思路: dfs建树裸题了,建树后权值相当于 lazy标记,区间更新,单点查询就好了。 这题我wa了不下60遍,也不知道为什么跟个sb一样。 首先 多组输入,多组输入!!!!!。 memset(head,0,sizeof(head)); ...

hddddh的博客 308

进阶篇第8节:寄存器压力——寄存器溢出对性能的影响及优化

**摘要:GPU寄存器是最快的存储单元(1周期访问),但数量有限。过高的寄存器使用会导致溢出(变量存入慢速本地内存)或降低占用率(减少并发线程数),严重影响性能。优化方法包括复用变量、使用共享内存替代寄存器数组、限制寄存器数量(--maxrregcount)等。实际测试显示,将寄存器使用从48个降至24个可使性能提升37%。分析工具如Nsight Compute可帮助检测寄存器压力。面试常见问题涉及寄存器溢出的检测与优化策略。

PeterPan的博客 95

Hdu 3974——Assign the task dfs序+线段树

题目: link. 题意: 公司里有一堆人,然后对于每个人(除了公司老板)每个人都有上属和下属,他们恰好构成一棵树,每当把任务分给某个人时,若他有下属,则他的所有子树全部做这个任务,对于每次查询输出某个节点正在做什么任务。 输入有2种操作: 1、C x 输入x这个人在做的任务编号 如果没工作输出-1 2、T x y 让x和x的下属做编号为y的工作 思路: 先跑一边dfs序,每个节点记录一个in和out表示时间戳,对于每个人p,in[p]到out[p]这段区间就是p的下属,dfs序完了之后用线段树维护每个人的

HHeyanjie的博客 197

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

HDU3974 Assign the task —— dfs时间戳 + 线段树

题目链接:https://vjudge.net/problem/HDU-3974 There is a company that has N employees(numbered from 1 to N),every employee in the company has a immediate boss (except for the leader of whole compa...

alince20008的博客 209

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

HDU 3974 Assign the task 【线段树+dfs时间戳】

题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=3974 ★开学之后又有好久没写博客了,快一个月了,写了一下以前写过的题目,居然忘记怎么写了。。。 不会写的原因是MLE 没有把head数组清0,调了一晚上,枯了 题意: 现在有一个公司,里面有n个员工,员工之间有上级和下属的关系。上级得到了任务 他会立刻和其所有下属转手干这份工作(把之前的事抛在...

HungTeen的博客 326

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

HDU-3974-Assign the task(DFS序+线段树)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3974 题目大意:给出n个人,m个关系,组成一棵树,一个人得到了任务后,他的所有下属都会做这份工作,问每个区间都有多少个不同的工作 思路:因为一个节点和他所有的子节点共享一个val。很容易想到DFS序,然后建个线段树就好了,区间更新单点查询。 ACCode: #include<stdli...

永远鲜红の幼月的博客 254

HDU 3974(Assign the task)线段树维护dfs序

题目: 在这里啊 题意: 一个公司有一个老板及许多员工 ,除老板外,每个员工都有自己的领导,然而每次分配工作之后,如果自己的领导得到了工作则自己也会去干相同的工作。 每次询问要问一个一人在干什么工作。 思路: 最简单可以想到的就是单点维护单点查询,这个我帮你们试过了,妥妥超时, 所以我们要优化一下,要区间更新,单点查询,因为每个人都有自己的领导,所以从公司的老板开始做深搜,这样子之后统计一下每个点...

laaahu的博客 467

F - Assign the task HDU - 3974(dfs序线段树)

F - Assign the taskHDU - 3974 dfs序线段树 把树形结构变成线性区间结构,树的向下传值变成了这个节点能覆盖的区间的修改。 线段树代码是真的难调,一点小bug就是找不出来,卡了两天。 1 #include <iostream> 2 #include <cstring> 3 4 using names...

dieche3140的博客 163

HDU - 3974 Assign the task DFS序建线段树

训练摸鱼发现好久没写博客了,下个月去区域赛了,有点小慌,水个博客压压惊。 不想贴题目,简单说下题意就是有一群员工具有上下级关系,体现出来就是一颗多叉树,子节点是父亲的下属这样子。然后现在安排工作,更新一个员工的工作序号的时候需要同时把下属的工作序号一起完成更新。 dfs序+线段树区间处理一下就水过了 线段树是基本操作。dfs序就是因为是一颗多叉树,那么对于树dfs遍历节点的出入得到一个序列,...

limyoonaya的博客 197

HDU-3974-Assign the task(线段树维护dfs序)

题目链接:HDU-3974-Assign the task 题意是给定一棵树,然后一种操作是指定一个点,这个点及这个点的的子树被染色,另一种操作是指定一个点,问这个点的颜色。 可以通过dfs树将这棵树放在线段上,记结点u在线段上的位置是pos[u],以结点u为根的子树的结点总数是cnt[u],那么在每次染色就是染色线段上pos[u]~pos[u]+cnt[u]-1这段区间。 ...

abcd12341abcd1234的博客 280

HDU 3974 Assign the task(线段树维护树的dfs序)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3974 解题思路: 将所有的关系建树,每次修改每一节点的同时对其所有子节点修改。 我们可以利用dfs序。 记录某一个点进入(开始遍历子节点)的顺序,出去(所有子节点全部遍历)的顺序 如图,其中一种dfs序为1 2 4 4 5 5 2 3 3 1,在一个节点这对位置中间都是都是这个节点的子节...

shadiao.的博客 163

[HDU - 3974] Assign the task 线段树+dfs序

题目链接:Assign the task 题解 我们不难发现给树的一个节点及其子节点染色,可以转化为线段树区间修改模型。 我们通过dfs,对每一个点进行重新编号。然后会发现重新编号后每个节点及其所有子节点的标号是连续的,所以我们可以转化为区间修改模型。剩下的就是线段树单点修改区间查询问题。 本题我认为关键点在于dfs序对节点进行重新编号,这种从无序转化为连续的思想值得我们学习、举一反三。 代码 #include<iostream> #include<algorithm> #incl

张小生的先生的博客 156

Assign the task HDU - 3974(dfs+线段树)

这题根本没想过线段树,如果不是kuangbin的专题,我想用并查集做。这题想不到的根本就是不会建树,把每个boss的小弟都一个一个按小弟等级排在boss后面,通过dfs找到每个人拥有的小弟数量,顺便再按等级把这些人排在a数组上,例如11管22,33 22管1,2,3,4,5 33管7,8,9,10,13,45,那么排在a数组上就是这样:(11){ (22) 1 2 3 4 5...

仰望蓝天的博客 222

HDU - 3974 Assign the task DFS括号引理+线段树

原题目链接 题意是给你一棵树,然后有两类操作,一种是将某个节点以及它所有的子孙修改成某个数,另一种是查询该节点的值。所有节点的初始值为-1; 思路 说实话不好联想到线段树上来,如果用暴力修改每棵子树的话每次修改的复杂度都可以达到O(n),不过我当时想到可以另外建立一棵结构相同的懒惰标记的树。但是复杂度并没有变化。 在学习图论的时候学DFS生成树的时候有一个叫做括号引理的结论。对于每个节点u,设d...

神様いないの日々 472

HDU - 3974 Assign the task(线段树区间更新+DFS序)

题目链接:\quadHDU - 3974题目大意:先给一棵n\quad 先给一棵n个点的数,“u,v”“u, v”表示vv是uu的父亲。 m\quad m个操作: “Txy”\quad \quad “T \quad x \quad y”表示把 以xx为根的子树全部染成yy这种颜色。 “Cx”\quad \quad “C \quad x”表示询问xx号节点当前是哪种颜色? \quad多组(T≤

XzzF1024的博客 612
上一篇: Tunnel Warfare (HDU - 1540,这也能用线段树 ?!)
下一篇: The Limit (ZOJ - 3999,表达式读入 + 多项式极限模拟)
The___Flash
博客等级 码龄8年 79粉丝 223原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值