如果你样例有少数询问和答案差1,交上去AC后两个subtask
查看原帖
如果你样例有少数询问和答案差1,交上去AC后两个subtask
95625
暴力出奇迹楼主2022/2/28 23:17

不如回头再看一眼题面

强制在线的规则:

GetQuery( &l, &r, t, last_ans, |E| )
    IF t > 0 THEN 
        l <- (l + t * last_ans) Mod |E| + 1
        r <- (r + t * last_ans) Mod |E| + 1
    IF l > r THEN Swap( l, r )

你可能想当然地写成了这个样子:

while(q--) {
	int l, r; scanf("%d %d", &l, &r);
	l = (l + lastans * t) % m + 1;
	r = (r + lastans * t) % m + 1;
	if(l > r) swap(l, r);
	......
}

改成这样就能过了:

while(q--) {
	int l, r; scanf("%d %d", &l, &r);
	if(t) {
		l = (l + lastans * t) % m + 1;
		r = (r + lastans * t) % m + 1;
	}
	if(l > r) swap(l, r);
	......
}

然后你惊奇地发现:这样写错正好过掉了强制在线的点!

可能只有我这个申必才会在这个地方卡一个下午吧

2022/2/28 23:17
加载中...