2021 ICPC 沈阳
队里状态不是很好,就打了两个小时,算是复健场。赛时两题,补题补到四题。
E - Edward Gaming, the Champion
小评
\(\mathcal{Consider\ by\ \pmb {Wida}}\),\(\mathcal{Solved\ by\ \pmb {Wida}}\) 。打卡题
题意
输出给定字符串中连续的 edgnb
的数量。
思路
赛时
直接遍历,对于每一个位置暴力判断其与其后1、2、3、4位的情况。
补题
借助 \(\tt string\) 的 \(\tt substr\) 函数可以快速得解。
AC代码
点击查看代码
// Date: 2022-10-05 12:27:22
// Problem: E - Edward Gaming, the Champion
// Contest: Virtual Judge - 2021沈阳赛
// URL: https://vjudge.net/contest/519216#problem/E
// Memory Limit: 512 MB
// Time Limit: 1000 ms
// --------By WIDA--------
#include <bits/stdc++.h>
using namespace std;
#define LL long long
#define int LL
const int N = 1e6 + 7;
signed main() {
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
// string s; cin >> s;
// int cnt = 0;
// for (int i = 4; i < s.size(); ++ i) {
// if (s[i] == 'b' && s[i - 1] == 'n' && s[i - 2] == 'g' &&
// s[i - 3] == 'd' && s[i - 4] == 'e') ++ cnt;
// }
// cout << cnt << endl;
string s; cin >> s;
int ans = 0;
for (int i = 0; i < s.size(); ++ i) {
ans += s.substr(i, 5) == "edgnb";
}
cout << ans;
return 0;
}
F - Encoded Strings I
小评
\(\mathcal{Consider\ by\ \pmb {Wida}\ \&\ \pmb {Wcj}}\),\(\mathcal{Solved\ by\ \pmb {Wida}}\) 。题不好读,有点绕,读懂了就是打卡题。
题意
对于给定字符串的每一个前缀连续子串,使用以下规则转换:
- 对于每一个字符 \(S_i\) ,找到其最后出现的那个位置;
- 统计其之后的不同字符的数量 \(X\) ;
- 将 \(S_i\) 变成字母表的第 \(X\) 位;
- 将其他与 \(S_i\) 相同的字符也变成上述。
输出转化后字典序最大的字符串。
思路
显然暴力,枚举每一个前缀连续子串,从后往前跑一遍统计不同字符数量,使用 \(\tt set\) (设置单独的一个变量也可)和 \(\tt map\) (直接用数组亦可)维护。
AC代码
点击查看代码
// Date: 2022-10-05 12:49:11
// Problem: F - Encoded Strings I
// Contest: Virtual Judge - 2021沈阳赛
// URL: https://vjudge.net/contest/519216#problem/F
// Memory Limit: 512 MB
// Time Limit: 1000 ms
// --------By WIDA--------
#include <bits/stdc++.h>
using namespace std;
#define LL long long
#define int LL
const int N = 1e6 + 7;
signed main() {
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int n; cin >> n;
string s; cin >> s;
string ans;
for (int i = 0; i < s.size(); ++ i) {
set<int> rem;
map<char, char> dic;
for (int j = i; j >= 0; -- j) {
char x = s[j];
char y = 'a' + rem.size();
if (dic.count(x) == 0) dic[x] = y;
rem.insert(s[j]);
}
string p;
for (int j = 0; j <= i; ++ j) {
char x = s[j];
p += dic[x];
}
ans = max(ans, p);
}
cout << ans << endl;
return 0;
}
J - Luggage Lock
小评
\(\mathcal{Consider\ by\ \pmb {Wida}\ \&\ \pmb {Wcj}}\ \&\ \pmb{Hamine}\),\(\mathcal{Solved\ by\ \pmb {Wida}}\ \&\ \pmb{Hamine}\) 。
题意
思路
AC代码
点击查看代码
//A WIDA Project
#include <bits/stdc++.h>
using namespace std;
#define LL long long
int main() {
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
//
return 0;
}
``/`
</details>