首页 > 其他分享 >cats 的数据结构

cats 的数据结构

时间:2024-08-26 19:37:07浏览次数:10  
标签:200005 int cats n1 数据结构 dp

  • 相信OI美学
点击查看代码
#include <bits/stdc++.h> 
using namespace std;
vector<int>a[200005];
int f[200005],s[200005],ansa[200005],ansb[200005];
void dp(int n1)
{
    s[n1]=1;
    f[n1]=n1;
    for(int i=0;i<a[n1].size();i++)
    {
        dp(a[n1][i]);
        s[n1]+=s[a[n1][i]];
        f[n1]=min(f[n1],f[a[n1][i]]);
    }
}
bool cmp(int a,int b)
{
    return f[a]<f[b];
}
void dfs(int n1,int l1,int r1,int l2,int r2)
{
    ansa[n1]=r1;
    ansb[n1]=r2;
    r1--;
    r2--;
    sort(a[n1].begin(),a[n1].end(),cmp);
    for(int i=0;i<a[n1].size();i++)
    {
        dfs(a[n1][i],l1,l1+s[a[n1][i]]-1,r2-s[a[n1][i]]+1,r2);
        l1=l1+s[a[n1][i]];
        r2=r2-s[a[n1][i]];
    }
}
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    int T;
    cin>>T;
    while(T--)
    {
        int n;
        cin>>n;
        for(int i=1;i<=n;i++)
        {
            a[i].clear();
        }
        for(int i=2;i<=n;i++)
        {
            int p;
            cin>>p;
            a[p].push_back(i);
        }
        dp(1);
        dfs(1,1,n,1,n);
        cout<<ansa[1]<<' '<<ansb[1];
        for(int i=2;i<=n;i++)
        {
            cout<<' '<<ansa[i]<<' '<<ansb[i];
        }
        cout<<"\n";
    }
    return 0;
}

标签:200005,int,cats,n1,数据结构,dp
From: https://www.cnblogs.com/watersail/p/18381513

相关文章

  • 【NOI】C++数据结构入门之一维数组(三)元素移动
    文章目录前言一、概念1.导入2.元素移动2.1逆序2.2删除2.3插入二、例题讲解问题:1009-数组逆序问题:1162-数组元素的删除问题:1211-数组元素的插入问题:1161.元素插入有序数组问题:1159.数组元素的移动三、总结四、感谢前言在继续我们的C++数据结构学习之旅......
  • 算法与数据结构——内存与缓存
    内存与缓存数组和链表两种数据结构分别代表了“连续存储”和“分散存储”两种物理结构。实际上,物理结构在很大程度上决定了程序对内存和缓存的使用效率,进而影响算法程序的整体性能。计算机存储设备计算机中包括三种类型的存储设备:硬盘(harddisk)、内存(random-accessmemory,RAM)、......
  • IEC61850教程,第二章:IEC 61850 数据结构
    第二章:IEC61850数据结构平时学习标准或调试IEC61850设备,需要IEC61850模拟器,推荐一款:客户端下载地址:IEC61850客户端模拟器服务端下载地址:IEC61850服务端模拟器IEC61850数据结构逻辑设备(LogicalDevice)变电站中的每个设备都是逻辑设备。下图中的逻辑设备是Bay控制器......
  • 25版王道数据结构课后习题详细分析 第五章 树与二叉树 5.3 二叉树的遍历和线索二叉树
    一、单项选择题————————————————————————————————————————解析:二叉树中序遍历的最后一个结点一定是从根开始沿右子女指针链走到底的结点,设用p指示。若结点p不是叶结点(其左子树非空),则前序遍历的最后一个结点在它的左子树中,A、B......
  • 考研系列-数据结构冲刺课复习笔记(上)
    写在前面:这篇文章是对王道考研冲刺课的高度总结,可以当做最后复习的提纲和知识点复习参考注意所有数据结构的结构体定义、算法的时间空间复杂度一、线性表1.顺序表        创建(静态、动态)、销毁、增删改查2.链表(1)单链表        分为带头结点的和不带......
  • 【数据结构-前缀异或和】力扣1177. 构建回文串检测
    给你一个字符串s,请你对s的子串进行检测。每次检测,待检子串都可以表示为queries[i]=[left,right,k]。我们可以重新排列子串s[left],…,s[right],并从中选择最多k项替换成任何小写英文字母。如果在上述检测过程中,子串可以变成回文形式的字符串,那么检测结果为......
  • 浅谈【数据结构】树与二叉树一
    目录1、树与二叉树1.1树的概念2、二叉树2.1二叉树的五大形态2.2二叉树的性质2.3二叉树的存储结构2.4二叉树的遍历谢谢帅气美丽且优秀的你看完我的文章还要点赞、收藏加关注没错,说的就是你,不用再怀疑!!!希望我的文章内容能对你有帮助,一起努力吧!!!1、树与二叉树1.1树......
  • 浅谈【数据结构】树与二叉树二
    目录1、二叉排序树1.1二叉树排序树插入1.1.1两种插入方法1.1.2循环法1.1.3递归法1.2二叉树的打印1.3二叉树的结点删除1.4销毁二叉树1.5层次打印谢谢帅气美丽且优秀的你看完我的文章还要点赞、收藏加关注没错,说的就是你,不用再怀疑!!!希望我的文章内容能对你有帮助,一......
  • 数据结构:189(轮转数组)leetcode(OJ)
    给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。示例1:输入:nums=[1,2,3,4,5,6,7],k=3输出:[5,6,7,1,2,3,4]解释:向右轮转1步:[7,1,2,3,4,5,6]向右轮转2步:[6,7,1,2,3,4,5]向右轮转3步:[5,6,7,1,2,3,4]示例 2:输入:n......
  • cats 的集合 1
    0/1Trie具象化一次操作对数据结构产生的影响试想,如果我们在一次修改指令中逐一更新了子树p中的所有节点,但是在之后的查询指令中却根本没有用到,那么更新p的整棵子树就是徒劳的精妙的懒标记设计,详见代码注释(1ll<60)用类实现懒标记无法读取文件是因为UTF-8BOM,另存为UTF-8就......