试了15次,RNM终于过了

Papyrus在审判你  •  1个月前


#include <bits/stdc++.h>
using namespace std;
string a[1000005];
map<string, int>tags;

int main() {
	int n;
	cin >> n;
	tags.clear();

	for (int i = 0; i < n; i++) {

		cin >> a[i];
	}

	int l = 0, r = 0;
	int ans = 1;
	int repeat = 0;
	tags[a[0]] = 1;

	while (r < n && l <= r) {
		if (repeat == 0) {
			if (r - l + 1 > ans) {
				ans = r - l + 1;
			}

			r++;

			if (++tags[a[r]] > 1)
				repeat++;
		} else {
			if (--tags[a[l]] == 1) {
				repeat--;
			}

			l++;
		}
	}

	cout << ans << endl;
	return 0;
}
其实思路也很简单,
重点是在于你如何去优化。

评论:

请先登录,才能进行评论