QOJ.ac

QOJ

Límite de tiempo: 6 s Límite de memoria: 1024 MB Puntuación total: 100

#6665. 组队

Estadísticas

20XX年国际信息学奥林匹克竞赛新增了混合项目。在混合项目中,由一名男学生和一名女学生组成一个团队来解决问题。信息学奥林匹克委员会为了组建参加混合项目的代表队,选拔了 $N$ 名男学生候选人和 $M$ 名女学生候选人。$N$ 名男学生候选人的编号从 $0$ 到 $N-1$。同样地,$M$ 名女学生候选人的编号从 $0$ 到 $M-1$。

团队的实力受组成团队的两名学生的构思能力和实现能力共同影响。学生的构思能力和实现能力可以用 $1$ 到 $10^9$ 之间的整数表示。$i$ 号男学生的构思能力为 $A_1[i]$,实现能力为 $B_1[i]$。此外,$j$ 号女学生的构思能力为 $A_2[j]$,实现能力为 $B_2[j]$。如果 $i$ 号男学生和 $j$ 号女学生组成一个团队,该团队的实力定义为 $(A_1[i] + A_2[j]) \times (B_1[i] + B_2[j])$。

由于学生们都是经过激烈竞争选拔出来的候选人,不存在某位学生在构思能力和实现能力上都优于另一位学生的情况。更准确地说,男学生的构思能力随编号增大而增加,实现能力随编号增大而减少。即对于 $0 \le i \le N-2$,满足 $A_1[i] < A_1[i+1]$ 且 $B_1[i] > B_1[i+1]$。同样地,女学生的构思能力也随编号增大而增加,实现能力随编号增大而减少。即对于 $0 \le j \le M-2$,满足 $A_2[j] < A_2[j+1]$ 且 $B_2[j] > B_2[j+1]$。

信息学奥林匹克委员会希望根据不同的场景组建团队,使得团队实力最大化。存在 $Q$ 个场景,编号从 $0$ 到 $Q-1$。在 $k$ 号场景中,男学生的编号必须在 $L_1[k]$ 到 $R_1[k]$ 之间,女学生的编号必须在 $L_2[k]$ 到 $R_2[k]$ 之间。请编写一个程序,求出每个场景下满足条件且能构成的团队实力的最大值。

实现细节

你需要实现以下函数:

vector<long long> build_teams(vector<int> A1, vector<int> B1, vector<int> A2,
vector<int> B2, vector<int> L1, vector<int> R1, vector<int> L2, vector<int> R2)
  • $A_1, B_1$: 长度为 $N$ 的数组。$i$ 号男学生的构思能力为 $A_1[i]$,实现能力为 $B_1[i]$。($0 \le i \le N-1$)
  • $A_2, B_2$: 长度为 $M$ 的数组。$j$ 号女学生的构思能力为 $A_2[j]$,实现能力为 $B_2[j]$。($0 \le j \le M-1$)
  • $L_1, R_1, L_2, R_2$: 长度为 $Q$ 的数组。在 $k$ 号场景中,男学生的编号必须在 $L_1[k]$ 到 $R_1[k]$ 之间,女学生的编号必须在 $L_2[k]$ 到 $R_2[k]$ 之间。($0 \le k \le Q-1$)
  • 该函数必须返回一个大小为 $Q$ 的数组 $C$。$C[k]$ 应等于 $k$ 号场景下能构成的团队实力的最大值。

提交的源代码中不得执行任何输入输出函数。

数据范围

  • $1 \le N \le 100\,000$
  • $1 \le M \le 100\,000$
  • 对于所有 $0 \le i \le N-1$,有 $1 \le A_1[i], B_1[i] \le 10^9$
  • 对于所有 $0 \le j \le M-1$,有 $1 \le A_2[j], B_2[j] \le 10^9$
  • 对于所有 $0 \le i \le N-2$,有 $A_1[i] < A_1[i+1]$,$B_1[i] > B_1[i+1]$
  • 对于所有 $0 \le j \le M-2$,有 $A_2[j] < A_2[j+1]$,$B_2[j] > B_2[j+1]$
  • $1 \le Q \le 100\,000$
  • 对于所有 $0 \le k \le Q-1$,有 $0 \le L_1[k] \le R_1[k] \le N-1$
  • 对于所有 $0 \le k \le Q-1$,有 $0 \le L_2[k] \le R_2[k] \le M-1$

子任务

  1. (5分) $N \le 500, M \le 500, Q \le 500$
  2. (10分) $Q \le 20$
  3. (10分) 对于所有 $0 \le k \le Q-1$,有 $L_2[k] = 0, R_2[k] = M-1$
  4. (35分) 对于所有 $0 \le k \le Q-1$,有 $L_2[k] = R_2[k]$
  5. (40分) 无额外限制

样例

样例 1

输入数据:

N = 5, M = 4, A1 = [2, 7, 8, 9, 10], B1 = [10, 9, 8, 6, 1], A2 = [1, 3, 5, 9], B2 = [10, 8, 7, 5], Q = 3,
L1 = [0, 2, 1], R1 = [4, 3, 1], L2 = [1, 0, 0], R2 = [3, 2, 0]

评测程序调用如下:

build_teams([2, 7, 8, 9, 10], [10, 9, 8, 6, 1], [1, 3, 5, 9], [10, 8, 7, 5],
[0, 2, 1], [4, 3, 1], [1, 0, 0], [3, 2, 0])

在 0 号场景中,男学生编号为 0 到 4,女学生编号为 1 到 3。选择 1 号男学生和 3 号女学生,团队实力为 $(7+9) \times (9+5) = 224$。这是满足条件下的最大值。

在 1 号场景中,男学生编号为 2 到 3,女学生编号为 0 到 2。选择 2 号男学生和 2 号女学生,团队实力为 $(8+5) \times (8+7) = 195$。这是满足条件下的最大值。

在 2 号场景中,男学生编号为 1,女学生编号为 0。团队实力为 $(7+1) \times (9+10) = 152$。

因此,函数应返回 [224, 195, 152]

样例 2

输入数据:

N = 4, M = 2, A1 = [1, 6, 8, 10], B1 = [9, 5, 3, 1], A2 = [5, 6], B2 = [8, 7], Q = 4, L1 = [0, 1, 2, 3],
R1 = [0, 1, 2, 3], L2 = [0, 0, 0, 0], R2 = [1, 1, 1, 1]

评测程序调用如下:

build_teams([1, 6, 8, 10], [9, 5, 3, 1], [5, 6], [8, 7], [0, 1, 2, 3], [0, 1,
2, 3], [0, 0, 0, 0], [1, 1, 1, 1])

在 0 号场景中,选择 0 号男学生和 1 号女学生,团队实力为 $(1+6) \times (9+7) = 112$。 在 1 号场景中,选择 1 号男学生和 1 号女学生,团队实力为 $(6+6) \times (5+7) = 144$。 在 2 号场景中,选择 2 号男学生和 0 号女学生,团队实力为 $(8+5) \times (3+8) = 143$。 在 3 号场景中,选择 3 号男学生和 0 号女学生,团队实力为 $(10+5) \times (1+8) = 135$。

这些都是各场景下的最大值。因此,函数应返回 [112, 144, 143, 135]

Sample grader

Sample grader 接收以下格式的输入:

  • Line 1: $N \ M$
  • Line $2 + i$ ($0 \le i \le N-1$): $A_1[i] \ B_1[i]$
  • Line $2 + N + j$ ($0 \le j \le M-1$): $A_2[j] \ B_2[j]$
  • Line $2 + N + M$: $Q$
  • Line $3 + N + M + k$ ($0 \le k \le Q-1$): $L_1[k] \ R_1[k] \ L_2[k] \ R_2[k]$

Sample grader 输出以下内容:

  • Line $1 + k$ ($0 \le k \le Q-1$): 函数 build_teams 返回数组的第 $k$ 个元素

请注意,Sample grader 可能与实际评测中使用的评测程序不同。

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
EditorialOpen Official EditorialQingyu- Download
#1254EditorialOpenEditorial for #6665pystraf2026-03-11 22:09:36View

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.