社区讨论
已过,一点小疑问
P9606[CERC2019] ABB参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mhpi3he9
- 此快照首次捕获于
- 2025/11/08 07:42 3 个月前
- 此快照最后确认于
- 2025/11/08 07:42 3 个月前
以下代码为什么将才是正确答案?
CPP#include<bits/stdc++.h>
#define sdn cout
#define ll long long
#define vi vector<int>
#define ld double
#define vl vector<ll>
#define mpair make_pair
#define pb push_back
#define ull unsigned long long
using namespace std;
mt19937_64 rnd(time(nullptr));
int read(){
int x = 0,f = 1;
char ch = getchar();
while(ch < 48 && ch > 57){
if(ch == '-') f = -1;
ch = getchar();
}
while(ch >= 48 && ch <= 57){
x = x<<3 + x<<1 + ch-48;
ch = getchar();
}
return x*f;
}
void write(int x){
if(x < 0) putchar('-'),x = -x;
if(x > 9) write(x/10);
putchar(x%10+48);
}
const int N = 2e5 + 10,M = 2e6 + 10,INF1 = 1e9 + 7;
unsigned long long base1 = 131,base2 = 233317;
const ll INF2 = 1e18 + 7,Mod = 998244353;
int n,m,q,T,d[M],k,cnt,rt;
int ans;
vector <int> lk[N];
string s;
char ss[M];
int main(){
ios::sync_with_stdio(0);cin.tie(0);
cin>>n;
string s;cin>>s;
ss[++cnt] = '#';
for(int i = 0;i < n;i ++){
ss[++cnt] = s[i];
ss[++cnt] = '#';
}
int len = 2*n+1;
int l = 0,r = -1;
for(int i = 0;i < len;i ++){
d[i] = i>r?1:min(d[l+r-i],r-i+1);
while(i+d[i]<len&&i-d[i]>=0&&ss[i+d[i]]==ss[i-d[i]]) d[i]++;
d[i] --;
if(i+d[i]>r){
l = i-d[i];
r = i+d[i];
}
if(i+d[i]+1==len||i-d[i]==0) ans = max(ans,(d[i]+(i+1)%2)/2*2+(i%2));
}
ans = n-ans;
sdn<<ans-1<<endl;
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...