诡异的RE事件?逻辑推理被证伪了?
查看原帖
诡异的RE事件?逻辑推理被证伪了?
658786
STUDENT00楼主2024/1/22 19:02

各位柯南,帮我破破案:

众所周知,一个代码=A+B RE了,当且仅当:A RE 了或 B RE了。

然而:我先后提交了这样三份代码,得出了诡异的结论:

一、Code=A+B,RE了
#include<bits/stdc++.h>
using namespace std;
const int N=1000005;
int n,m,a[N];
int lst[N];
int c[N];
vector<int> ll[N],id[N];
int ans[N];
int lowbit(int x){return x&(-x);}
int add(int x,int y){
	for(;x<=n;x+=lowbit(x)) c[x]+=y;
}
int ask(int x){
	int res=0;
	for(;x;x-=lowbit(x)) res+=c[x];
	return res;
}
int main(){
	memset(lst,-1,sizeof(lst));
	scanf("%d",&n);
	for(int i=1;i<=n;i++) scanf("%d",&a[i]);
	scanf("%d",&m);
	for(int i=1;i<=m;i++){
		int l,r;scanf("%d%d",&l,&r);
		ll[r].push_back(l);
		id[r].push_back(i);
	}
	for(int r=1;r<=n;r++){
		add(r,1);
	}
	for(int i=1;i<=m;i++) printf("%d\n",ans[i]);
	return 0;
}
二、Code=A,WA了
#include<bits/stdc++.h>
using namespace std;
const int N=1000005;
int n,m,a[N];
int lst[N];
int c[N];
vector<int> ll[N],id[N];
int ans[N];
int lowbit(int x){return x&(-x);}
int add(int x,int y){
	for(;x<=n;x+=lowbit(x)) c[x]+=y;
}
int ask(int x){
	int res=0;
	for(;x;x-=lowbit(x)) res+=c[x];
	return res;
}
int main(){
	memset(lst,-1,sizeof(lst));
	scanf("%d",&n);
	for(int i=1;i<=n;i++) scanf("%d",&a[i]);
	scanf("%d",&m);
	for(int i=1;i<=m;i++){
		int l,r;scanf("%d%d",&l,&r);
		ll[r].push_back(l);
		id[r].push_back(i);
	}
	for(int r=1;r<=n;r++){
	}
	for(int i=1;i<=m;i++) printf("%d\n",ans[i]);
	return 0;
}
三、Code=B,WA了
#include<bits/stdc++.h>
using namespace std;
const int N=1000005;
int n,m,a[N];
int lst[N];
int c[N];
vector<int> ll[N],id[N];
int ans[N];
int lowbit(int x){return x&(-x);}
int add(int x,int y){
	for(;x<=n;x+=lowbit(x)) c[x]+=y;
}
int ask(int x){
	int res=0;
	for(;x;x-=lowbit(x)) res+=c[x];
	return res;
}
int main(){
	for(int r=1;r<=n;r++){
		add(r,1);
	}
	return 0;
}

综上所述,导出两条结论:

一、洛谷炸了

二、欧几里得傻了

2024/1/22 19:02
加载中...