AT_joig2023_f.タイピング大会 (Typing Contest)
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
在 JOIG 国家,人们使用 JOIG 语言。在 JOIG 语言中,共有 15 种字符:A, B, C, D, E, F, G, H, I, J, K, L, M, N, O。
下个月将在 JOIG 国举行一次打字比赛,比拼使用 15 种字符组成的长度为 N 的字符串 S 的输入所需时间。在本次比赛中,参赛者需遵循以下规则进行打字:
- 参赛者只能用一根手指进行打字。
- 参赛者需使用一排按键呈一行排布、极为狭长的键盘,15 个字符的键依次排在键盘上。每位参赛者可以自由决定各字符按键的具体排列顺序与位置。
- 参赛者需依次输入字符串 S 的第 1,2,…,N 个字符。
本次比赛共有 Q 位参赛者。不同参赛者的打字能力不同。第 i 位参赛者(1≤i≤Q)的打字规则如下:
- 按下手指正下方的按键一次需要 Ai 毫秒。
- 手指每向左移动一个按键需 Li 毫秒。
- 手指每向右移动一个按键需 Ri 毫秒。
现给定字符串 S 以及每位参赛者的数据,请你为每位参赛者求出,从开始输入 S 第一个字符到打完最后一个字符的最短所需时间(单位:毫秒)。
输入格式
输入按以下格式给出:
N S Q
A1 L1 R1
A2 L2 R2
⋮
AQ LQ RQ
输出格式
输出共 Q 行。第 i 行(1≤i≤Q)输出第 i 位参赛者从开始输入 S 第一个字符到打完最后一个字符的最短时间(单位:毫秒)。
输入输出样例
输入#1
6 ABAABB 1 100 150 210
输出#1
1110
输入#2
6 CBACAB 1 150 240 220
输出#2
2260
输入#3
20 AAAAAAAAAAAAAAAAAAAA 1 230000000 80000000 80000000
输出#3
4600000000
输入#4
7 EACHBAG 5 130 104 162 107 219 45 144 168 157 213 79 257 100000000000 100000000000 100000000000
输出#4
2078 1766 2465 2894 1600000000000
输入#5
19 JOIGCODINGCHALLENGE 5 1 1 1 100 200 200 225 111 111 123456789 987654321 987654321 31415926535 27182818284 27182818284
输出#5
48 7700 7494 30987654300 1385204334401
说明/提示
子任务
1.(2 分)字符串 S 的每个字符均为 A,且 Q=1。
2.(3 分)字符串 S 的每个字符均为 A 或 B,且 Q=1。
3.(4 分)字符串 S 的每个字符均为 A、B 或 C,且 Q=1。
4.(9 分)字符串 S 的每个字符为 A、B、C、D、E、F、G、H 之一,Q=1,N≤100。
5.(14 分)字符串 S 的每个字符为 A、B、C、D、E、F、G、H 之一,Q=1。
6.(26 分)字符串 S 的每个字符为 A、B、C、D、E、F、G、H 之一。
7.(23 分)Q=1。
8.(7 分)Li=Ri(1≤i≤Q)。
9.(12 分)无其他额外限制。
样例说明 1
例如,考虑键盘从左到右依次排列为 ONMLKJIHGFEDCBA。此时,按照下表的操作,输入字符串 ABAABB 总共需要 1110 毫秒。
| 步骤 | 操作 | 指下按键 | 用时(毫秒) |
|---|---|---|---|
| 1 | 按下 A | A | 100 |
| 2 | 向左移一位至 B | A → B | 150 |
| 3 | 按下 B | B | 100 |
| 4 | 向右移一位至 A | B → A | 210 |
| 5 | 按下 A | A | 100 |
| 6 | 按下 A | A | 100 |
| 7 | 向左移一位至 B | A → B | 150 |
| 8 | 按下 B | B | 100 |
| 9 | 按下 B | B | 100 |
除了上述键盘排列外,也可能有其它能在 1110 毫秒内完成输入的布局,但无法更快。因此,输出 1110。
此输入数据满足子任务 2,3,4,5,6,7,9 的限制。
样例说明 2
例如,考虑键盘从左到右依次排列为 CABDEFGHIJKLMNO。此时,按照下表的操作,输入字符串 CBACAB 总共需要 2260 毫秒。
| 步骤 | 操作 | 指下按键 | 用时(毫秒) |
|---|---|---|---|
| 1 | 按下 C | C | 150 |
| 2 | 向右移一位至 A | C → A | 220 |
| 3 | 向右移一位至 B | A → B | 220 |
| 4 | 按下 B | B | 150 |
| 5 | 向左移一位至 A | B → A | 240 |
| 6 | 按下 A | A | 150 |
| 7 | 向左移一位至 C | A → C | 240 |
| 8 | 按下 C | C | 150 |
| 9 | 向右移一位至 A | C → A | 220 |
| 10 | 按下 A | A | 150 |
| 11 | 向右移一位至 B | A → B | 220 |
| 12 | 按下 B | B | 150 |
除了上述键盘排列外,也可能有其它能在 2260 毫秒内完成输入的布局,但无法更快。因此,输出 2260。
此输入数据满足子任务 3,4,5,6,7,9 的限制。
样例说明 3
由于需要连续输入 20 次 A,无论键位如何排列,总时间为 230000000×20=4600000000 毫秒。因此,应输出 4600000000。
该输入数据满足所有子任务的限制。
样例说明 4
本样例满足子任务 6,9 的限制。
样例说明 5
本样例满足子任务 8,9 的限制。
数据范围与约定
- 1≤N≤1000000。
- S 是长度为 N 的字符串。
- S 的每个字符为
A,B,C,D,E,F,G,H,I,J,K,L,M,N,O之一。 - 1≤Q≤150000。
- 1≤Ai≤1011(1≤i≤Q)。
- 1≤Li≤1011(1≤i≤Q)。
- 1≤Ri≤1011(1≤i≤Q)。
- N,Q,Ai,Li,Ri 均为整数。
由 ChatGPT 5 翻译
输入解题思路,AI测评打分。不知道怎么写?