如果你 WA on 48 或者别的点 TLE 可以来看看
  • 板块CF891C Envy
  • 楼主hegm
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/2/8 16:52
  • 上次更新2023/10/24 01:24:01
查看原帖
如果你 WA on 48 或者别的点 TLE 可以来看看
331947
hegm楼主2023/2/8 16:52

如果你 WA on 48

检查你的枚举询问

你可能是使用两个指针 l,rl,r 表示 ili\sim l 的区间内的边权相同,并且 lrl\sim r 区间的询问相同。

注意的是如果你 lrl\sim r 的区间询问相同不一定代表 ili\sim l 的区间边权一样。

你要在第二层while里面特判

for(int i=1,l,r;i<=cnt;i)
	{
		l=i;
		while(val[d[i].k]==val[d[l].k])
		{
			r=l;
			while(d[l].id==d[r].id)
			{
				if(val[d[l].k]!=val[d[r].k])break;//!!!
			}
		}
		i=l; 
	}

如果你TLE了,可以试试按秩合并的深度合并,size合并可能比较慢。

2023/2/8 16:52
加载中...