酷代码 AI
菜单
服务商

题目描述 午饭时间,喵喵喵幼儿园的n位小朋友从左到右排成一列等待领取自己的午餐。我们 将这些小朋友从左到右依次标号为 1,2,⋯,n−1,n。 负责配餐的老师已经拿到了所有人的午饭餐食,餐食同样也是从左到右排成一排。 老师手里拿到了一份序列 r1 ⋯rn,代表编号为i的小朋友应该拿到从左向右数第 ri份 午餐餐食(1≤ri≤n且 ri两两不同)。 按照上面的序列分发完成后,老师又拿到了一个序列 a1⋯an,其中 a i代表未分发前从 左向右数第 i 份餐食的一个参数。 老师想要知道,对每个小朋友,他们所拿到的午餐的这个参数的值是多少。但是这个 任务对于老师来说太难了,所以喵喵喵幼儿园找到了万能的你。 输入格式 共三行。 第一行一个整数,代表 n。 第二行 n 个整数,代表 r1⋯rn。 第三行 n 个整数,代表 a1⋯an。 输出格式 一行,n 个整数。第 i 个整数代表编号为 i 的小朋友所拿到的午餐的这个参数是多 少。 输入输出样例 输入 #1 4 4 1 3 2 7 4 2 9 输出 #1 9 7 2 4 说明/提示 样例解释 编号

```cpp #include <iostream> using namespace std; const int MAXN = 1e5 + 5; int main() { int n; // 存储小朋友应该拿到的餐食编号 int r[MAXN]; // 存储餐食的参数 int a[MAXN]; cin >> n; // 读取小朋友应该拿到的餐食编号 for (int i = 1; i <= n; i++) { cin >> r[i]; } // 读取餐食的参数 for (int i = 1; i <= n; i++) { cin >> a[i]; } // 输出每个小朋友拿到的餐食的参数 for (int i = 1; i <= n; i++) { if (i > 1) { cout << " "; } cout << a[r[i]]; } cout << endl; return 0; } ``` 代码解释: 1. 头文件和常量定义: - 引入`iostream`用于输入输出操作。 - 定义`MAXN`为`1e5 + 5`,作为数组的最大长度。 2. 主函数部分: - 定义变量`n`表示小朋友的数量,数组`r`存储小朋友应该拿到的餐食编号,数组`a`存储餐食的参数。 - 读取`n`的值。 - 读取`r`数组,记录每个小朋友应拿的餐食编号。 - 读取`a`数组,记录每份餐食的参数。 - 遍历每个小朋友,根据`r[i]`的值输出对应餐食的参数`a[r[i]]`,相邻输出值用空格分隔。 复杂度分析: - 时间复杂度:代码主要进行了三次遍历,每次遍历的时间复杂度为$O(n)$,因此总的时间复杂度为$O(n)$。 - 空间复杂度:使用了两个长度为`n`的数组,因此空间复杂度为$O(n)$。 [2025-11-16 19:24:11 | AI问答 | 481点数解答]

相关提问
发财导航,免费问AI
实用工具查看更多