acwing第75场周赛
这次题比较水,但是还是没能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;
}
acwing第75场周赛的更多相关文章
- AcWing第85场周赛
这场周赛是手速局hh 死或生 某国正在以投票的方式决定 2 名死刑犯(编号 1∼2)的生死. 共有 n 组人员(编号 1∼n)参与投票,每组 10 人. 每组成员只参与一名死刑犯的投票,其中第 i 组 ...
- AcWing 第11场周赛题解
计算abc 首先 \(0<=a<=b<=c\) 会随机给出 \(a+b,a+c,b+c,a+b+c\)的值 因为\(a,b,c\)都为正整数,所以\(a+b+c\)一定为最大值 然后 ...
- AcWing第78场周赛
今天想起来了,就补一下吧~ 第一题 商品分类 货架中摆放着 n 件商品,每件商品都有两个属性:名称和产地. 当且仅当两件商品的名称和产地都相同时,两件商品才视为同一种商品. 请你统计,货架中一共有多少 ...
- LeetCode-第 166 场周赛
LeetCode-第 166 场周赛 1281.subtract-the-product-and-sum-of-digits-of-an-integer 1282.group-the-people-g ...
- LeetCode 第 165 场周赛
LeetCode 第 165 场周赛 5275. 找出井字棋的获胜者 5276. 不浪费原料的汉堡制作方案 5277. 统计全为 1 的正方形子矩阵 5278. 分割回文串 III C 暴力做的,只能 ...
- LeetCode--第180场周赛
LeetCode--第180场周赛 1380. 矩阵中的幸运数 class Solution { public: vector<int> luckyNumbers (vector<v ...
- Leetcode第 217 场周赛(思维量比较大)
Leetcode第 217 场周赛 比赛链接:点这里 做完前两题我就知道今天的竞赛我已经结束了 这场比赛思维量还是比较大的. 1673. 找出最具竞争力的子序列 题目 给你一个整数数组 nums 和一 ...
- 【AcWing】第 62 场周赛 【2022.07.30】
AcWing 4500. 三个元素 题目描述 给定一个长度为 \(n\) 的数组 \(r\_1,r\_2,-,r\_n\). 请你找到其中的三个元素 \(r\_a,r\_b,r\_c\),使得 \(r ...
- Leetcode 第133场周赛解题报告
今天参加了leetcode的周赛,算法比赛,要求速度比较快.有思路就立马启动,不会纠结是否有更好的方法或代码可读性.只要在算法复杂度数量级内,基本上是怎么实现快速就怎么来了. 比赛时先看的第二题,一看 ...
- 第二场周赛(递归递推个人Rank赛)——题解
很高兴给大家出题,本次难度低于上一场,新生的六个题都可以直接裸递归式或者裸递推式解决,对于老生的汉诺塔3,需要找出一般式,后两题分别为裸ST算法(或线段树)/线性DP. 正确的难度顺序为 种花 角谷定 ...
随机推荐
- C++图像处理函数及程序(一)
C++开源项目: Boost.GIL:通用图像库 CImg :用于图像处理的小型开源C++工具包 CxImage :用于加载,保存,显示和转换的图像处理和转换库,可以处理的图片格式包括 BMP, JP ...
- 使用docker安装的tomcat部署activiti-app.war、activiti-admin.war失败(ClassNotFoundException)
背景 一直以来习惯用docker配置一些本地学习环境,许多教程配置activiti的方式都是通过复制activiti的war包部署在tomcat中,我尝试了一下通过docker的方式遇到了一些不易察觉 ...
- VuePress@next 使用数学公式插件
VuePress@next 使用数学公式插件 搞了一个VuePress1.0的 现在升级了一下,但是使用数学公式的插件老报错啊!经过不懈努力,终于搞定了.现在记录一下. VuePress 介绍 Vue ...
- 语音合成技术汇总1:Glow-TTS:通过单调对齐实现文本到语音的生成流
今天开始开一期语音合成经典论文的翻译 Glow-TTS:通过单调对齐实现文本到语音的生成流 摘要: 最近,文本到语音(Text-to-Speech,TTS)模型,如FastSpeech和ParaNet ...
- Trackbar调色板
我们将会建立一个简单的应用,显示我们指定的颜色.将会建立一个窗口,显示三个trackbar指定RGB三个颜色通道值.可以滑动trackbar来改变相应的颜色.默认情况下,初始颜色为黑色. cv2.ge ...
- TypeScript: Object is of type 'unknown'.
错误代码展示 解决方案 将e声明为any类型,如下所示: // 修改蛇的X和Y值 try { this.snake.X = X; this.snake.Y = Y; }catch(e:any){ // ...
- SQL Server 内存占用较高 - 清除缓存 或 设置内存最大占用值
SQL Server对服务器内存的使用策略是用多少内存就占用多少内存,只用在服务器内存不足时,才会释放一点占用的内存,所以SQL Server 服务器内存往往会占用很高 查看内存状态: DBCC Me ...
- cesium 绑定dom弹窗(跟随模型)
https://blog.csdn.net/qq_36266612/article/details/109648367?utm_term=cesium%E6%80%8E%E4%B9%88%E6%B7% ...
- DELPHI应用EXCEL(1)
在介绍使用delphi控制excel之前前,我们首先需要了解关于EXCEL的几个基本概念:EXCEL应用程序.工作薄(book).工作表(sheet)以及单元格(CELLS): 首先,我们是打开exc ...
- 手写raft(二) 实现日志复制
1. Raft日志复制介绍 在上一篇博客中MyRaft实现了leader选举,为接下来实现日志复制功能打下了基础: 手写raft(一) 实现leader选举 日志复制是raft最核心也是最复杂的功能, ...