逆天二分求调(玄关)
  • 板块灌水区
  • 楼主exCat
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/10/24 09:58
  • 上次更新2024/10/24 13:34:20
查看原帖
逆天二分求调(玄关)
361932
exCat楼主2024/10/24 09:58

现在要求一个点最远的一个位置使得它是原串的后缀,然后就用了二分hash(我二分的是位置),结果遇到了神秘问题。
错误的示范

int l=1,r=i,ans=2*n;
while(l<=r) 
{
	int mid=(l+r)>>1;
	if(cheak(mid,i)==cheak(n-i+mid,n))ans=mid,r=mid-1;
	else l=mid+1;
}
f[i]=min(query(1,1,n,max(1ll,ans-1),i),ans);
modify(1,1,n,i,i,f[i]);

正确的示范

int l=1,r=i,ans=2*n;
while(l<=r) 
{
	int mid=(l+r+1)>>1;
	if(cheak(mid,i)==cheak(n-i+mid,n))ans=mid,r=mid-1;
	else l=mid+1;
}
f[i]=min(query(1,1,n,max(1ll,ans-1),i),ans);
modify(1,1,n,i,i,f[i]);

求大佬解答,加一减一这种不是可以遍历完吗?

2024/10/24 09:58
加载中...