首页 > 其他分享 >acwing第75场周赛

acwing第75场周赛

时间:2022-10-30 01:00:08浏览次数:100  
标签:周赛 r1 r2 输出 int 75 编号 节点 acwing

这次题比较水,但是还是没能ak,自己小结一下吧


第一道题就是自己枚举相加就行
第二道题是一个多关键字排序,wa了几次,是因为优先级有两个是相同的需要特判一下,然后可以把字符转化为数字的优先级,我用了一个hash。
第三题原来没太懂,后来明白了就是对一个无向图进行深度优先遍历就行了。

总结:自己虽然好多知识点已经学过了,但是做题还是不会用,还是不能发现题目中的一些性质,还是得多练!只要不断地前进,尽管走的很慢,总有一天会变强的!

这里只记录一下第三题的代码

给定一个 n
个节点的树,节点编号为 1∼n

树的根节点编号 r1
已知,每个节点(r1
除外)的父节点编号 pi
已知。

现在,我们要重新指定树的根节点,更具体地说,我们要将树的根节点从 r1
变换为 r2

请你计算并输出,变换树根后,每个节点(r2
除外)的父节点编号。

输入格式

第一行包含三个整数 n,r1,r2
,分别表示节点数量、原根节点编号、新根节点编号。

第二行包含 n−1
个整数,表示每个节点(r1
除外)的父节点编号 pi

输入保证,编号越小的节点,其父节点编号越先给出。

输出格式

在一行中输出 n−1
个整数,表示变换树根后,每个节点(r2
除外)的父节点编号。

输出应保证,编号越小的节点,其父节点编号越先输出。

数据范围

前 5
个测试点满足 2≤n≤10

所有测试点满足 2≤n≤50000
,1≤r1≠r2≤n
,1≤pi≤n

输入样例1:

3 2 3
2 2
输出样例1:

2 3
输入样例2:

6 2 4
6 1 2 4 2
输出样例2:

6 4 1 4 2


#include<iostream>
#include <cstring>
using namespace std;
const int N = 5e5 + 10;
int h[N], e[N], ne[N], idx;
int p[N], r1, r2, n;

void add(int a, int b)
{
    e[idx] = b; ne[idx] = h[a], h[a] = idx ++;
}

void dfs(int u, int fa)
{
    p[u] = fa;
    for(int i = h[u]; i != -1; i = ne[i])
    {
        int j = e[i];
        if(j == fa) continue;
        dfs(j, u);
    }
}

int main()
{
    memset(h, -1, sizeof h);
    cin >> n >> r1 >> r2;
    for(int i = 1; i <= n; ++i)
    {
        if(i == r1) continue;
        int b; cin >> b;
        add(i, b); add(b, i);
    }
    
    dfs(r2, -1);
    for(int i = 1; i <= n; ++ i)
    {   
        if(i == r2) continue;
        cout << p[i] << ' ';
    }
     
    return 0;
}

标签:周赛,r1,r2,输出,int,75,编号,节点,acwing
From: https://www.cnblogs.com/cxy8/p/16840341.html

相关文章

  • AcWing 1113. 红与黑
    蒟蒻只会暴搜了要点是先找到起点,从起点开始向各个方向搜DFS:(DFS当然也可以用for(inti=0;i,4;i++)来搜索四个方向,这里是个人习惯)#include<iostream>#include<cstring......
  • 803. 区间合并Acwing
    #include<iostream>#include<algorithm>#include<vector>usingnamespacestd;intn;intl,r;typedefpair<int,int>PII;vector<PII>ses;voidm(vector<PII>&segs......
  • 801. 二进制中1的个数Acwing
    #include<iostream>usingnamespacestd;constintN=1e5+10;intq[N];intlow(intx){returnx&(-x);}intmain(){intn;cin>>n;for(inti=0;......
  • 802. 区间和Acwing
    #include<iostream>#include<vector>#include<algorithm>usingnamespacestd;typedefpair<int,int>PII2;vector<int>q;vector<PII2>PII,PII1;constintN=3e5+10......
  • Codeforces Round #750 (Div. 2) F1
    F1.KorneyKorneevichandXOR(easyversion)我们观察题意发现我们需要找的是一个上升序列我们回忆上升序列的状态设计dp[i]表示第i个作为结尾最长的序列长度是多少......
  • 高精度HighAccuracy_acwing.cpp
    ​​​ 文章:    力扣模板:字符串相加-字符串相加-力扣(LeetCode)    acwing模板:常用代码模板1——基础算法-AcWing 例题:        P100......
  • AcWing 93. 递归实现组合型枚举
    #include<iostream>#include<cstring>#include<algorithm>usingnamespacestd;constintN=30;//多开几个,防止边界越界intn,m;intway[N];//表示方案//......
  • 力扣575(java&python)-分糖果(简单)
    题目:Alice有n枚糖,其中第i枚糖的类型为candyType[i]。Alice注意到她的体重正在增长,所以前去拜访了一位医生。医生建议Alice要少摄入糖分,只吃掉她所有糖的n/2......
  • [Typescript] 75. Easy - Push
    Implementthegenericversionof Array.pushForexample:typeResult=Push<[1,2],'3'>//[1,2,'3'] /*_____________YourCodeHere_____________*/t......
  • 洛谷P5759题解
    本文摘自本人洛谷博客,原文章地址:https://www.luogu.com.cn/blog/cjtb666anran/solution-p5759\[这道题重在理解题意\]选手编号依次为:\(1,2...N\)(\(N\)为参赛总人数)。......