关于优化
查看原帖
关于优化
929850
Chenyufeng040525楼主2024/9/16 06:18

对于以下类似代码

for(int i=1,l=1;i<=n;i++)
	{
		if(a[i]==a[i-1])l++;
		else 
		{
			for(int j=1;j<=l;j++)r[j]+=(l/j)*j;
			l=1;
		}
	}

其中数组r从1到l的分别加和赋值,可以通过对(l/j)整除分块和差分快速实现,最后只需进行前缀求和就能得到答案。 不过由于涉及到二阶差分求和,所以可能很少人想到这种优化,就在这里提一下。 如果不懂我在说什么的那就算了,反正这种优化也不是必须的。

2024/9/16 06:18
加载中...