求助 80pts 悬赏一个关注
查看原帖
求助 80pts 悬赏一个关注
743811
Shakespeare07楼主2022/7/20 17:17

rt,第一次的check函数我是这样写的:

bool check(int x){
	int cnt=0;
	for(int i=1,j=1;i<=n && j<=m;i++,j++){
		while(a[i]-b[j]>x) j++;
		while(b[j]-a[i]>x) i++;
		cnt++;
	}
	return cnt>=tot;
}

然后便只有80分。

我后面重构了一下代码,换了一种check的写法:

bool check(int x){
	int cnt=0,i=1,j=1;
	while(i<=n && j<=m){
		if(abs(a[i]-b[j])<=x) i++,j++,cnt++;
		else if(a[i]>b[j]) j++;
		else i++;
	}
	return cnt>=tot;
}

然后就A了。我觉得两次的check是等价的,不知道第一次的check有什么问题,求大佬指出。

2022/7/20 17:17
加载中...