题目背景
在洛谷上评测时,将如下内容粘贴至文件头:
我们在附件中提供了模板文件,你可以在该文件的基础上开始编辑。
题目描述
这是一道函数式交互题。
有 n 人,编号 0∼n−1。有 n 种拉面,编号 0∼n−1。
第 i 个人对第 j 种拉面的喜爱度为整数 Ai,j。Ai,j 越大,她对拉面 j 越喜欢。保证 ∀0≤p<q≤n−1,都有 Ai,p=Ai,q。 注意 Ai,j 可以 <0。
由于拉面存量不够,每种拉面仅供一人享用。设想这 n 个人以 π0,π1,…,πn−1(显然 π 是一个排列)的顺序点餐,首先第 π0 个人会点她最喜欢的拉面,然后 π1 会选择没被 π0 点过的拉面中,她最喜欢的拉面,以此类推。
换句话说,第 πi 个人会选择第 π0,π1,…,πi−1 个人没点过的拉面中,她最喜欢的拉面。
对于排列 π,设 σ(i) 为第 i 个人点的拉面,定义排列 π 的愉悦度为 0≤i<n∑Ai,σ(i)。
你可以进行至多 750 次询问:每次询问给定排列 π,交互库会返回 n 个二元组,第 i 个二元组为 (σ(i),Ai,σ(i))。目标是找到一个排列 π,最大化其愉悦度。
实现细节
你不需要,也不应该实现 main
函数。
你需要实现以下的函数:
- 参数 n:人数和拉面种类数。
- 返回一个排列 π0,π1,…,πn−1。
你可以调用以下的函数:
- 参数 order:一个排列 π0,π1,…,πn−1。
- 返回 n 个二元组,第 i 个二元组为 (σ(i),Ai,σ(i)),表示在给定排列下,第 i 个人会吃第 σ(i) 种拉面,以及她对第 σ(i) 种拉面的喜爱度。
在洛谷上评测时,将如下内容粘贴至文件头:
输入格式
见【实现细节】。
输出格式
见【实现细节】。
提示
样例交互
交互库 |
选手程序 |
调用 find_order(2) |
|
|
query({0,1}) |
{{0, 9}, {1, 0}} |
|
|
query({1, 0}) |
{{1, 5}, {0, 5}} |
|
|
返回 {1,0} |
在该样例中,A0=[9,5],A1=[5,0]。显然 π=[1,0] 可以达成最大的愉悦度 5+5=10。
数据范围
对于 100% 的数据,保证:
- 1≤n≤75;
- ∣Ai,j∣≤2×106。
std 至多会询问 c⋅nk 次,其中 c,k 是某个不小于 1 的常数。
子任务 |
n= |
得分 |
1 |
5 |
2 |
15 |
3 |
30 |
20 |
4 |
45 |
5 |
60 |
6 |
75 |