new file: P7534.cpp
This commit is contained in:
1 parent
c54ca05fe8
commit
4e710f464d
2 files changed
+152
No files matched your search
@@ -0,0 +1,37 @@
|
||||
#include <bits/stdc++.h>
|
||||
using namespace std;
|
||||
int n;
|
||||
char s[55][105];
|
||||
int lens[55];
|
||||
char inp[105];
|
||||
int leninp;
|
||||
char buf[50];
|
||||
int main() {
|
||||
for (int i = 1; i <= 32; i++)
|
||||
buf[i] = '*';
|
||||
scanf("%d", &n);
|
||||
for (int i = 1; i <= n; ++i) {
|
||||
scanf("%s", s[i] + 1);
|
||||
lens[i] = strlen(s[i] + 1);
|
||||
}
|
||||
scanf("%s", inp + 1);
|
||||
leninp = strlen(inp + 1);
|
||||
for (int i = 1; i <= n; ++i) {
|
||||
bool flag = 0;
|
||||
for (int j = 1; j <= leninp; j++) {
|
||||
if (s[i][j] != inp[j]) {
|
||||
flag = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!flag)
|
||||
buf[s[i][leninp + 1] - 'A' + 4] = s[i][leninp + 1];
|
||||
}
|
||||
for (int i = 1; i <= 4; i++) {
|
||||
for (int j = 1; j <= 8; j++) {
|
||||
putchar(buf[8 * (i - 1) + j]);
|
||||
}
|
||||
putchar('\n');
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,115 @@
|
||||
# P7534 [COCI 2016/2017 #4] Kartomat
|
||||
|
||||
## 题目描述
|
||||
|
||||
在火车站使用自动售票机时,可以通过其屏幕上的键盘搜寻目的地城市。键盘可抽象为一个 $4 \times 8$ 的字符矩阵:
|
||||
|
||||

|
||||
|
||||
目前,屏幕上显示着 $N$ 个字符串,表示城市的名称。为了搜寻目的地城市,你依次点击了若干个字母,作为初始字符串。
|
||||
|
||||
输入初始字符串之后,屏幕上只会留下以该字符串开头的城市(即留下的城市有一个前缀为初始字符串)。同时,如果通过初始字符串和一个字母不能搜寻到任何一个城市,那么一个 $\texttt *$ 字符则会代替屏幕上的这个字母。
|
||||
|
||||
求在输入初始字符串之后,键盘的最终情况。
|
||||
|
||||
## 输入格式
|
||||
|
||||
第一行,一个整数 $N$,表示屏幕上城市的数量。
|
||||
|
||||
接下来的 $N$ 行,每行一个只由大写字母组成的字符串,表示一个城市的名称。字符串长度不超过 $100$。
|
||||
|
||||
最后一行,输入初始字符串。初始字符串不会与任何一个城市完全相同,且必定是至少一个城市的前缀。
|
||||
|
||||
## 输出格式
|
||||
|
||||
输出一个 $4 \times 8$ 的字符矩阵,表示键盘的最终情况。
|
||||
|
||||
## 输入输出样例 #1
|
||||
|
||||
### 输入 #1
|
||||
|
||||
```
|
||||
4
|
||||
ZAGREB
|
||||
SISAK
|
||||
ZADAR
|
||||
ZABOK
|
||||
ZA
|
||||
```
|
||||
|
||||
### 输出 #1
|
||||
|
||||
```
|
||||
****B*D*
|
||||
*G******
|
||||
********
|
||||
********
|
||||
```
|
||||
|
||||
## 输入输出样例 #2
|
||||
|
||||
### 输入 #2
|
||||
|
||||
```
|
||||
4
|
||||
SPLIT
|
||||
VINKOVCI
|
||||
NOVSKA
|
||||
RIJEKA
|
||||
VINKO
|
||||
```
|
||||
|
||||
### 输出 #2
|
||||
|
||||
```
|
||||
********
|
||||
********
|
||||
********
|
||||
V*******
|
||||
```
|
||||
|
||||
## 输入输出样例 #3
|
||||
|
||||
### 输入 #3
|
||||
|
||||
```
|
||||
4
|
||||
AAAABCD
|
||||
AAAABCA
|
||||
AAAACDE
|
||||
AAAAAAA
|
||||
AAAA
|
||||
```
|
||||
|
||||
### 输出 #3
|
||||
|
||||
```
|
||||
***ABC**
|
||||
********
|
||||
********
|
||||
********
|
||||
```
|
||||
|
||||
## 说明/提示
|
||||
|
||||
**【样例 1 解释】**
|
||||
|
||||
在输入初始字符串 $\texttt{ZA}$ 之后,键盘上剩下的字母只有 $\texttt{B,D,G}$。
|
||||
|
||||
|初始字符串|剩余字母|新字符串|可搜寻城市|
|
||||
| :----------: | :----------: | :----------: | :----------: |
|
||||
|$\texttt{ZA}$|$\texttt B$|$\texttt{ZAB}$|$\texttt{ZABOK}$|
|
||||
|$\texttt{ZA}$|$\texttt D$|$\texttt{ZAD}$|$\texttt{ZADAR}$|
|
||||
|$\texttt{ZA}$|$\texttt G$|$\texttt{ZAG}$|$\texttt{ZAGREB}$|
|
||||
|
||||
而初始字符串与其它字母所构成的新字符串不能搜寻到任何一个其它城市,因此它们将会从屏幕上消失,变为 $\texttt *$ 字符。
|
||||
|
||||
**【数据规模与约定】**
|
||||
|
||||
对于 $100\%$ 的数据,$1 \le N \le 50$。
|
||||
|
||||
**【提示与说明】**
|
||||
|
||||
**题目译自 [COCI 2016-2017](https://hsin.hr/coci/archive/2016_2017/) [CONTEST #4](https://hsin.hr/coci/archive/2016_2017/contest4_tasks.pdf) _T2 Kartomat_。**
|
||||
|
||||
**本题分值按 COCI 原题设置,满分 $80$。**
|
||||
Reference in new issue
Block a user