QOJ.ac

QOJ

実行時間制限: 1 s メモリ制限: 2048 MB 満点: 25

#2724. 鹅与鹰

統計

Geese vs. Hawks

Troy 和 JP 是冰球的忠实粉丝。本赛季每支球队都进行了 $N$ 场比赛。每场比赛都在两支球队之间进行,得分较高的球队获胜。没有比赛以平局告终。

Troy 最喜欢的球队是 Waterloo Geese,他将他们所有比赛的结果记录为一个字符串 $S$。如果 Geese 在第 $i$ 场比赛中获胜,则 $S_i = \text{W}$;否则,如果 Geese 在第 $i$ 场比赛中失败,则 $S_i = \text{L}$。他还记录了他们在第 $i$ 场比赛中的得分 $A_i$。

JP 最喜欢的球队是 Laurier Hawks,他将他们所有比赛的结果记录为一个字符串 $T$。如果 Hawks 在第 $j$ 场比赛中获胜,则 $T_j = \text{W}$;否则,如果 Hawks 在第 $j$ 场比赛中失败,则 $T_j = \text{L}$。他还记录了他们在第 $j$ 场比赛中的得分 $B_j$。

Troy 和 JP 按照他们各自支持的球队比赛的顺序记录了胜负和得分。

“宿敌之战”是指 Geese 和 Hawks 互相对战的比赛。由于 Troy 和 JP 都没有记录他们支持的球队面对的对手,他们不确定哪些比赛(如果有的话)是宿敌之战。他们想知道,在符合他们所记录信息的前提下,宿敌之战中两队得分之和的最大可能值是多少。

输入格式

第一行包含一个整数 $N$ ($1 \le N \le 1000$)。

第二行包含一个长度为 $N$ 的字符串 $S$,由字符 $\text{W}$ 和 $\text{L}$ 组成。

第三行包含 $N$ 个整数 $A_1, \dots, A_N$ ($1 \le A_i \le 1\,000\,000$)。

第四行包含一个长度为 $N$ 的字符串 $T$,由字符 $\text{W}$ 和 $\text{L}$ 组成。

第五行包含 $N$ 个整数 $B_1, \dots, B_N$ ($1 \le B_j \le 1\,000\,000$)。

在 25 分的总分中,有 10 分满足 $N \le 10$。

输出格式

输出一行一个整数,表示潜在的宿敌之战中两队得分之和的最大可能值。

样例

样例输入 1

1
W
2
W
3

样例输出 1

0

说明 1

由于 Geese 和 Hawks 都赢了他们所有的比赛,因此不可能有任何宿敌之战。

样例输入 2

4
WLLW
1 2 3 4
LWWL
6 5 3 2

样例输出 2

14

说明 2

每支球队进行的第四场比赛可能是一场宿敌之战,其中 Geese 以 4 分对 Hawks 的 2 分获胜。Geese 进行的第三场比赛和 Hawks 进行的第二场比赛可能是一场宿敌之战,其中 Hawks 以 5 分对 Geese 的 3 分获胜。两队得分之和为 $4 + 2 + 5 + 3 = 14$,这是最大可能值。

注意,Geese 进行的第一场比赛是一场获胜且得分为 1 分的比赛:这场比赛不可能是对阵 Hawks 的,因为没有一场比赛是 Hawks 得分为 0 分的。同样,Hawks 进行的第一场比赛也不能使用,因为 Hawks 输了且得了 6 分,而 Geese 从未有过得分至少为 7 分的比赛。


Wrong Answer

Troy 为一场编程竞赛出了以下题目(标题为 WA):

有一个包含 $N$ 个关卡的游戏,编号从 1 到 $N$。有两个角色,最初都在第 1 关。对于 $i < j$,将一个角色从第 $i$ 关移动到第 $j$ 关需要花费 $A_{i,j}$ 个金币。不允许将角色从第 $i$ 关移动到第 $j$ 关(其中 $i > j$)。为了赢得游戏,每个关卡(第 1 关除外)必须恰好被一个角色访问。赢得游戏所需的最少金币数量是多少?

JP 是一名参赛者,提交了以下 Python 解法:

def Solve(N, A):
# A[i][j] is cost of moving from level i to level j
# N is the number of levels
x, y, sx, sy = 1, 1, 0, 0 # Initialize x and y to 1, sx and sy to 0
for i in range(2, N + 1): # loop from 2 to N
if sx + A[x][i] < sy + A[y][i]:
sx += A[x][i]
x = i
else:
sy += A[y][i]
y = i
return sx + sy

Troy 确信 JP 的解法是错误的。假设对于 WA 的某个输入,JP 的解法返回 $X$,但赢得游戏所需的最少金币数量为 $Y$。为了展示 JP 的解法有多么错误,请帮助 Troy 找到一个输入 $N$ 和 $A_{i,j}$,使得 $\frac{X}{Y}$ 最大化。

输入格式

无输入。

输出格式

按以下格式输出一个 WA 的输入:

第一行输出一个整数 $N$ ($2 \le N \le 100$)。

然后输出 $N-1$ 行;第 $i$ 行应包含 $N-i$ 个整数 $A_{i,i+1}, \dots, A_{i,N}$ ($1 \le A_{i,j} \le 100$)。

如果输出格式不正确,将在评测系统的样例测试中获得错误判定并得 0 分。

否则,假设对于你的输入,JP 的解法返回 $X$,而赢得游戏所需的最少金币数量为 $Y$。你将获得 $\lfloor \min(25, \frac{X}{4Y}) \rfloor$ 分,其中 $\lfloor Z \rfloor$ 是不大于 $Z$ 的最大整数。

样例

样例输出

5
1 2 3 4
10 9 8
7 6
5

说明

赢得游戏的最佳方式是一个角色访问第 2 关,另一个角色访问第 3、4 和 5 关。这花费了 $(1) + (2 + 7 + 5) = 15$ 个金币。JP 的解法返回 18。因此 $\frac{X}{4Y} = \frac{18}{4 \times 15} = 0.3$,所以该输出将获得 $\lfloor 0.3 \rfloor = 0$ 分。


Fun Palace

你正在努力为你的朋友们准备一场有趣的派对。幸运的是,你刚刚找到了派对的完美场地:一个趣味宫殿。趣味宫殿有 $N$ 个趣味房间,以线性结构连接。趣味房间编号从 1 到 $N$,对于 $1 \le i \le N-1$,趣味房间 $i$ 和 $i+1$ 由一个趣味隧道连接。我们称这样的趣味隧道与趣味房间 $i$ 和 $i+1$ 相关联。此外,趣味房间 1 与一个离开趣味宫殿的出口隧道相关联。

趣味隧道可以处于两种状态之一:开启或关闭。当房间 $i$ 和 $i+1$ 之间的趣味隧道开启时,朋友们可以在两个房间之间自由往返。

默认情况下,所有趣味隧道都是关闭的。但是,它们可以由一组朋友按下所需数量的趣味按钮来暂时开启。对于每个趣味隧道,在与该隧道相连的趣味房间中都有一组趣味按钮。如果连接到隧道的其中一个房间中的所有按钮都被不同的朋友按下,那么趣味隧道就会开启。否则,趣味隧道将立即关闭。房间 $i$ 和 $i+1$ 之间的趣味隧道连接到房间 $i$ 中的一组 $a_i$ 个按钮和房间 $i+1$ 中的一组 $b_i$ 个按钮。换句话说,如果房间 $i$ 中至少有 $a_i$ 个朋友,或者房间 $i+1$ 中至少有 $b_i$ 个朋友,那么房间 $i$ 和 $i+1$ 之间的隧道就可以开启。

出口隧道遵循类似的规则,但它仅连接到房间 1 中存在的一组 $e$ 个按钮。

你希望确保你的朋友们获得最大的乐趣,这显然意味着要让你的朋友们永远被困在趣味宫殿里。在出口趣味隧道永远不会开启的前提下,你可以分配到各个趣味房间的朋友的最大数量是多少?

输入格式

第一行包含一个整数 $N$ ($1 \le N \le 1000$),即趣味房间的数量。

第二行包含一个整数 $e$ ($1 \le e \le 10\,000$)。

接下来的 $N-1$ 行,每行包含两个空格分隔的整数,其中第 $i$ 行包含 $a_i$ 和 $b_i$ ($1 \le a_i, b_i \le 10\,000$)。

在 25 分的总分中,有 3 分满足 $1 \le e \le 200, a_i = 1, b_i = 1$。

另有 5 分满足 $1 \le e, a_i, b_i \le 2$。

另有 12 分满足 $N \le 200, 1 \le e, a_i, b_i \le 200$。

输出格式

输出一个整数,表示在出口隧道永远不会开启的情况下,可以分配到各个趣味房间的朋友的最大总数。

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.