一些转移上的细节
查看原帖
一些转移上的细节
560807
木棉絮123楼主2024/11/27 09:58

我仿照第一篇题解,根据 O(n2)O(n^2) 的思路加上 lstailst_{a_i} 和前缀和优化转移。 但是这么写就错了:

lst[a[1]]=1;
fo(i,2,n+1)
{
	f[i]=check(i,i-2)*a[i]+f[i-1];//here
	if(lst[a[i]]==0)
	{
		lst[a[i]]=i;
		continue;
	}
	f[i]=max(f[i],f[lst[a[i]]+1]+s[i-1]-s[lst[a[i]]]+a[i]);
	lst[a[i]]=i;
}

答案会偏大。 做出如下修改就通过了此题。

+ f[i]=f[i-1];
- f[i]=check(i,i-2)*a[i]+f[i-1];

想知道为什么,是重复计算了一次贡献吗?

2024/11/27 09:58
加载中...