Hack.
  • 板块P10810 【MX-S2-T1】变
  • 楼主WsW_花逝爆零人
  • 当前回复8
  • 已保存回复8
  • 发布时间2024/7/27 19:23
  • 上次更新2024/7/27 20:40:59
查看原帖
Hack.
349824
WsW_花逝爆零人楼主2024/7/27 19:23
0
ababababababababababababababab

显然答案是 22。
被 Hack 提交记录

被 Hack 代码

#include<iostream>
#include<string.h>
#include<vector>
#include<algorithm>
using namespace std;
const int maxn=5000005;
int n,k;
char s[maxn];
bool check(int len){
	int val=0;
	for(int i=1;i<=len;i++){
		int ch[27]={0},maxx=0;
		for(int j=1;j<=n/len;j++){
			ch[s[(j-1)*len+i]-'a']++;
		}
		for(int j=0;j<=26;j++){
			maxx=max(maxx,ch[j]);
		}
		val+=n/len-maxx;
		if(val>k)return false;
	}
	return true;
} 
vector<int>len;
int main(){
	scanf("%d%s",&k,s+1);
	n=strlen(s+1);
	for(int i=1;i*i<=n;i++){
		if(n%i!=0)continue;
		len.push_back(i);
		len.push_back(n/i);
	}
	sort(len.begin(),len.end());
	int ans,l=0,r=len.size()-1;
	while(l<=r){
		int mid=(l+r)/2;
		bool res=check(len[mid]);
		if(res)ans=mid,r=mid-1;
		else l=mid+1;
	}
	printf("%d",len[ans]);
	return 0;
} 
2024/7/27 19:23
加载中...