如果你90分WA#7
查看原帖
如果你90分WA#7
300497
zhangshiwei楼主2024/11/27 09:33

很可能的错误原因:它要能回到原来的点

(代码很丑,马蜂及其不良好)

例如:

void solve1(){
	deque<LL>q;
	for(LL i=1;i<=n<<1;i++){
		while(!q.empty()&&q.front()<i-n)q.pop_front();
		if(i>n&&oil[q.front()-1]-l[q.front()-1]>=oil[i-n-1]-l[i-n-1])ans1[i-n]=1;
		while(!q.empty()&&oil[q.back()-1]-l[q.back()-1]>=oil[i-1]-l[i-1])q.pop_back();
		q.push_back(i);
	}
}

它可能不能回来,是错的

应当调整入队和判对的顺序

改为:

void solve1(){
	deque<LL>q;
	for(LL i=1;i<=n<<1;i++){
		while(!q.empty()&&q.front()<i-n)q.pop_front();
		while(!q.empty()&&oil[q.back()-1]-l[q.back()-1]>=oil[i-1]-l[i-1])q.pop_back();
		q.push_back(i);
		if(i>n&&oil[q.front()-1]-l[q.front()-1]>=oil[i-n-1]-l[i-n-1])ans1[i-n]=1;
	}
}

就对了

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