首页 > 其他分享 >2024杭电多校08-1008《cats 的数据结构》

2024杭电多校08-1008《cats 的数据结构》

时间:2024-09-03 11:53:31浏览次数:5  
标签:杭电多校 va ai 08 dfs 2024 int now 节点

题目链接Problem - 7524

分析:

我们发现最重要的一个条件是:父节点的ai,bi都会比子节点的ai,bi(对应)大。

那么单独考虑ai,可以发现,按dfs序是可以办到“父——>子”这一过程的。

题目又限制父子节点关系和ai,bi大小关系是充要条件,那么不能把A的儿子ai,bi设的“太小”使其错误地成为了某个B的儿子。

为了儿子“不乱窜”,在同样dfs遍历取bi的时候,对于某节点的儿子应当遍历顺序和ai相反。

dfsa和dfsb很好写,定义一个全局变量now初值为n,每dfs一次now--,这样父节点的值一定比子节点大。

void dfsa(int p){
    a[p]=now--;
    for(auto x:v[p]){
        dfsa(x);
    }
}
void dfsb(int p){
    b[p]=now--;
    for(auto x:v[p]){
        dfsb(x);
    }
}

 由于题目要求字典序最小,ai 在bi之前输出,所以我们考虑贪心ai。我们要尽量让标号小的ai后被dfs到,标号大的先被dfs到。

于是,我们开一个va[N]数组,存这个节点及其所有子节点标号最小值。在dfsa时按这个顺序跑。

int dfs(int p){
	va[p]=min(p,va[p]);
	for(auto x:v[p]){
		va[p]=min(va[p],dfs(x));
	}
	return va[p];
}

最后注意跑dfsb之前,子节点遍历顺序反向,now赋值为n。

总代码如下:

#include<bits/stdc++.h>
using namespace std;
typedef long long int ll;
//祖先的值总比儿子大,则值应当满足dfs序
//为了ai bi不会同序(同序会出现非父子关系出现同大同小)
//又ai先,所以贪心ai,bi遍历儿子时反ai序即可
//为了贪心ai,所以按照节点所有子节点最小标号给其赋值
const int N=200005;
int a[N],b[N];
int va[N];
vector<int>v[N];
int n;
int now=1;
int dfs(int p){
	va[p]=min(p,va[p]);
	for(auto x:v[p]){
		va[p]=min(va[p],dfs(x));
	}
	return va[p];
}
void dfsa(int p){
    a[p]=now--;
    for(auto x:v[p]){
        dfsa(x);
    }
}
void dfsb(int p){
    b[p]=now--;
    for(auto x:v[p]){
        dfsb(x);
    }
}
void solve(){
    scanf("%d",&n);
    for(int i=1;i<=n+1;i++){
		v[i].clear();
		va[i]=10000000;
	}
    for(int i=2;i<=n;i++){
        int x;
        scanf("%d",&x);
        v[x].push_back(i);
    }
	va[1]=dfs(1);
    for(int i=1;i<=n;i++){
        sort(v[i].begin(),v[i].end(),[](int a,int b)->bool{return va[a]>va[b];});
    }
    now=n;
    dfsa(1);
    now=n;
    for(int i=1;i<=n;i++){
        reverse(v[i].begin(),v[i].end());
    }
    dfsb(1);
    for(int i=1;i<=n;i++){
        printf("%d %d",a[i],b[i]);
        if(i<n) printf(" ");
    }
    return ;
}
int main(){
    int t;
    scanf("%d",&t);
    while(t--){
        solve();
        if(t) printf("\n");
    }
    return 0;
}

标签:杭电多校,va,ai,08,dfs,2024,int,now,节点
From: https://blog.csdn.net/2301_80204127/article/details/141857607

相关文章

  • 2024/09/03笔记
    开发---测试-----运维----UI排期巡检绿色,黄色,红色IDE:/dev/hd,hda,hda1,hda2,hdc1SATA/SAS/SCSI:/dev/sda,sda1PCI-E3.03000Mb/S4.05000-70005.07000-1W/dev/vdavda1virtual/dev/xvdaxen(笨重)---KVMvirtual瀑布式开发敏捷式开发----持续集成:将小模块......
  • SOMEIP_ETS_081: ClientServiceActivate_Server_reboot
    测试目的:验证设备(DUT)是否能够检测到其服务器的重启,并通过重新建立通信来适当地做出反应。描述本测试用例旨在检查DUT在检测到服务器重启后,是否能够重新建立TCP连接,并重新订阅事件组,以确保通信恢复正常。测试拓扑:具体步骤:TESTER:通过clientServiceActivate方法激活DUT......
  • 20240903_110652 mysql 填空题 dml
    全列添加,往student表(id,name,age)添加数据,id自增长,name值为'tom',age值为6insertintostudentvalues(null,'tom',6)限定列的添加,往student表(id,name,age)添加数据,不管id,name值为'tom',age值为6insertintostudent(name,age)values('tom',6)添加多条数据,往stude......
  • 2024Hvv漏洞汇总(128个POC)
    2024Hvv漏洞整理(128个POC)​(网上漏洞零零散散)下面是收集到的且有POC的漏洞整理合集,鄙人分了三种格式供各位提取,下面贴上目录与图片,由于字数有点大,各位请移步网盘自行提取。按照Hvv时间线进行汇总每天爆出的漏洞(非最全Hvv漏洞)提前总结:各位道友可移步到我的公众号(公众号同名搜......
  • 合合信息启信宝参编国内首份《数据产业图谱(2024)》
    近日,在2024中国国际大数据产业博览会上,北京交通大学张向宏教授正式发布了国内首部《数据产业图谱(2024)》(以下简称“图谱”)。该图谱由北京交通大学牵头,联合清华大学、北京大学、中国软件评测中心、华为、合合信息等11家单位共同参与构建。《数据产业图谱(2024)》首次全面展示了我国数......
  • 2024年9月数据治理/项目管理/产品管理等内训来了解
    在瞬息万变、竞争激烈的市场里,企业为求繁盛,宜内外寻觅资深导师,开展学习与培训。简而言之,内训是企业成长的必经之路。 数据治理 数据管理基础数据处理伦理数据治理数据架构数据建模和设计数据安全数据集成和互操作文件和内容管理参考数据和主数据数据仓库和商务智能元数据管理数据......
  • 2024年9月北京、天津、上海、深圳CDGA/CDGP认证报名到这
    DAMA认证中的CDGA和CDGP是数据管理领域的专业认证之路。通过这两个认证,个人可以提升自己在数据管理领域的专业水平和能力,为企业的发展贡献自己的力量。同时,企业也可以通过选拔和培养具备DAMA认证的数据管理人才,提升自身的数据管理能力,推动企业数字化转型和升级。【认证含金量】·数......
  • P9108 [PA2020] Malowanie płotu
    题意:给定\(n,m\),一个区间序列\(\{[L_1,R_1],[L_2,R_2],\cdots,[L_n,R_n]\}\)被称为好的当且仅当:\(\foralli\in[1,n],1\leL_i\leR_i\lem\)。\(\foralli\in[1,n-1],[L_i,R_i]\cup[L_{i+1},R_{i+1}]\ne\emptyset\)。输出好的序列个数对给定质数\(p\)......
  • PlugIR:开源还不用微调,首尔大学提出即插即用的多轮对话图文检索 | ACL 2024
    即插即用的PlugIR通过LLM提问者和用户之间的对话逐步改进文本查询以进行图像检索,然后利用LLM将对话转换为检索模型更易理解的格式(一句话)。首先,通过重新构造对话形式上下文消除了在现有视觉对话数据上微调检索模型的必要性,从而使任意黑盒模型都可以使用。其次,构建了LLM问答者根据......
  • 【2024-09-02】二宝托管
    20:00如果说自己的名字意味着种光荣,那么国旗则代表着种责任,一种使命,值得我们付出一切去捍卫,去战斗。                                                 ——孙颖莎为了......