90分,1个点RE求助
  • 板块题目总版
  • 楼主Beta_Theta
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/4/22 21:01
  • 上次更新2024/4/23 10:43:59
查看原帖
90分,1个点RE求助
965461
Beta_Theta楼主2024/4/22 21:01
#include <bits/stdc++.h>
using namespace std;
map<string, int> sum;
map<string, bool> vis;
int n, m, l = 1, r = 1, res, ansl = 0, ansr = 1000007, num;
string x, s[1000007];
int main() {
	cin >> n;
	for (int i = 1; i <= n; i++) {
		cin >> x;
		vis[x] = 1;
	}
	cin >> m;
	for (int i = 1; i <= m; i++) {
		cin >> s[i];
		sum[s[i]]++;
		if (vis[s[i]] && sum[s[i]] == 1) {
			res++;
		}
	}
	cout << res << "\n";
	sum.clear();
	if (vis[s[1]]) sum[s[1]] = num = 1;
	while (r <= m) {
		if (num < res) {
			sum[s[++r]]++;
			if (vis[s[r]] && sum[s[r]] == 1) {
				num++;
			}
		} else {
			if (ansr - ansl > r - l) {				
				ansl = l;
				ansr = r;
			}
			sum[s[l]]--;
			if (vis[s[l]] && !sum[s[l]]) {
				num--;
			}
			l++;
		}
	}
	cout << ansr - ansl + 1;
	return 0;
}

P1381单词背诵

2024/4/22 21:01
加载中...