2024.9.16上午校测

T1

题目描述

首先,让我们来一道萌萌哒的并查集吧。

你有 \(n\) 个萌萌哒元素。每个元素都单独在一个集合中。同时,我们有 \(n - 1\) 个操作,每次合并两个元素所在的集合,保证合并前两个元素位于不同的集合。

现在有 \(m\) 个询问 \((x, y)\),每次询问需要你输出元素 \(x, y\) 第一次位于同一集合是第几次操作后。

输入格式

第一行两个数 \(n, m\)

接下来 \(n - 1\) 行每行两个数 \(x, y\),表示合并操作。

接下来 \(m\) 行表示询问。

输出格式

对于每一个询问,输出一个数表示答案。

输入样例

3 3
1 2
2 3
1 1
1 2
1 3

输出样例

0
1
2

数据规模

对于 \(40\%\) 数据,\(n \leq 10000, m \leq 10000\)

对于 \(100\%\) 数据,\(n \leq 10^5, m \leq 10^5\)

T2

题目描述

然后再来一道裸裸的模板题。

给你两个 \(1 ~ n\) 排列,请求出它们的 LCS。

输入格式

第一行一个数 \(n\)

\(2, 3\) 行分别 \(n\) 个数表示两个排列。

输出格式

一行表示答案。

输入样例

3
1 2 3
1 3 2

输出样例

2

数据规模

对于 \(20\%\) 数据,\(n \leq 1000\)

对于 \(100\%\) 数据,\(n \leq 100000\)

T3

题目描述

现在你要实现一个文件系统,支持以下操作:


cd Directory_Name

如果当前路径下有名为 Directory_Name 的文件夹,则进入该文件夹所对应的路径。

否则输出 No such directory!


cd ..

如果当前路径存在父路径,则返回父路径。

否则输出 No parent directory!


touch File_Name

如果当前目录下存在名为 File_Name 的文件则输出 File already exists!,否则创建这样一个文件。


rm File_Name

如果当前目录下存在名为 File_Name 的文件则删除它,否则输出 No such file!


mkdir Directory_Name

如果在当前路径下存在名为 Directory_Name 的文件夹,则输出 Directory already exists!,否则创建一个这样一个文件夹(当前路径不变)。


rmdir Directory_Name

如果在当前路径下存在名为 Directory_Name 的文件夹,则删除之,否则输出 No such directory!

ls

列出当前路径下所有的文件和文件夹,每一项占一行,按创建的先后顺序给出。

采用一下形式输出:

Item_Name <Type>

TypeD(文件夹)或 F(文件)

注意:同一路径下文件与文件夹可以重名,但同一路径下文件与文件,文件夹与文件夹不能重名。

初始时当前路径处于根路径下,无父路径。

输入格式

每个文件一组数据。

第一行为 \(Q\),表示有 \(Q\) 个操作。

接下来是 \(Q\) 行,每行输入为以上描述的操作之一。

文件与文件夹的名称为小写字母,且最长为 \(10\)

输出格式

输出与操作对应

输入样例1

3
mkdir standy
touch totalfrank
ls

输出样例1

standy <D>
totalfrank <F>

输入样例2

6
mkdir standy
cd standy
touch totalfrank
cd ..
rm totalfrank
ls

输出样例2

No such file!
standy <D>

数据规模

对于 \(10\%\) 数据,\(Q \leq 10\)

对于 \(100\%\) 数据,\(Q \leq 100\)

posted @ 2024-09-20 17:16  Orange_new  阅读(33)  评论(0)    收藏  举报