这题不用 PR 好像也能过
查看原帖
这题不用 PR 好像也能过
161849
cirnovsky楼主2020/8/19 19:24

加个小优化,把原序列中每个数的质因数大于阈值的整成一个新的序列,小于的就每次遍历算贡献。

这样连快读都不用,测评记录

不过重点不是这个 /fad,我是来问两个玄学问题的。

我的代码 里有这两个部分。

一个是莫队的移动区间算贡献:

void Contribute()
{
	int l = 1, r = 0;
	for (int i = 1; i <= m; ++i)
	{
		while (l > Q[i].sl) 	Make_Cont(--l, 1);
		while (r < Q[i].sr) 	Make_Cont(++r, 1);
		while (l < Q[i].sl) 	Make_Cont(l++, -1);
		while (r > Q[i].sr) 	Make_Cont(r--, -1);
		/*
		while (l > Q[i].sl) 	Make_Cont(--l, 1);
		while (l < Q[i].sl) 	Make_Cont(l++, -1);
		while (r > Q[i].sr) 	Make_Cont(r--, -1);
		while (r < Q[i].sr) 	Make_Cont(++r, 1);
		*/
		ans[Q[i].id] = Find_Val(i);
	}
}

改成注释里面的版本就会 WA。

第二个问题,主函数里面处理逆元和离散化的部分。

	Find_Mes(); // 处理逆元和离散化
	for (int i = 1, l, r; i <= m; ++i)
	{
		scanf("%d %d", &l, &r);
		Q[i] = Query(l, r, lps[l], rps[r], i);
	}
	sort(Q + 1, Q + 1 + m);
	/*Find_Mes()*/

Find_Mes() 函数放到注释的位置就会 TLE。

有神仙能回答一下我的问题吗?谢谢。

2020/8/19 19:24
加载中...