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>
posted @ 2022-10-13 13:39  hh2048  阅读(35)  评论(0编辑  收藏  举报