队内赛T1贪心日常

Posted SSL_ZZL

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了队内赛T1贪心日常相关的知识,希望对你有一定的参考价值。

队内赛T1 日常


题目


输入输出样例
输入 #1

10
aabdbaddca

输出 #1

3

大样例
example2.zip


解题思路

关于,第三个子任务的意义是什么??

贪心
奇迹以第 i 个点为结尾, 奇迹最大长度

l 为以 i 为结尾,奇迹的最左端
比如 abadb 的最左端为 1,1,2,2,3;奇迹长度为1,2,2,3,3
奇迹的长度为 i - l + 1

用一个桶记录字母上次出现的位置
每次加入 i 时,看一下当前的奇迹有没有包含位置 i 的字母,如果有就更新最左端


Code

#include<bits/stdc++.h>

using namespace std;

char s[300100];  //反正任务3没分,就不想搞字母输入了
int n, ans, l, now, a[30];

int main() {
	scanf("%d", &n);
	scanf("%s", s + 1);
	l = 1;
	for(int i = 1; i <= n; i ++) {
		int now = s[i] - 'a' + 1;
		if(l <= a[now]) l = a[now] + 1;  //更新最左端
		a[now] = i;  //更新字母的位置
		ans = max(ans, i - l + 1);
	}
	printf("%d", ans);
}

以上是关于队内赛T1贪心日常的主要内容,如果未能解决你的问题,请参考以下文章

luogu 11.8 队内赛 暴力T1 Lyrith -迷宮リリス-

队内赛 T1数学题高尚的战斗之神想要取模

队内ACM赛

队内赛 T2数学巡回的梦魇之神喜欢数列

队内赛 T3区间DP大哥扛纵连

2022.2.27 队内个人训练赛(上)