刚刚比赛的T4RE代码求调
  • 板块学术版
  • 楼主SnowTrace
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/8/13 18:56
  • 上次更新2023/10/27 15:34:35
查看原帖
刚刚比赛的T4RE代码求调
580036
SnowTrace楼主2022/8/13 18:56

rt

赛时因为没看懂题目,写了个判断逆序对个数

本来想骗点分,但是莫名其妙RE了

求大佬指出下面这份代码为啥会RE

/bx/bx/bx

源代码 复制
#include<bits/stdc++.h>
using namespace std;
#define lowbit(x) x&(-x)
#define int long long
int tree[100005],lian[100005],a[100005],x[100005],y[100005];
int upd(int now,int pos){
	for(int i =pos;i<100005;i+=lowbit(i))tree[i]+=now;
}int query(int pos){
	int res =0 ;
	for(int i =pos;i>0;i-=lowbit(i))res+=tree[i];
	return res;
}//普通的树状数组板子
signed main(){
int n,h = 0;
cin>> n;
for(int i =1;i<n;i++){
	cin>> x[i] >> y[i];
}for(int i =1;i<n;i++){
	if(i == 1){
		if(x[i] == x[i+1] or x[i] == y[i+1]){
			a[++h] = y[i];
			a[++h] = x[i];
			}else{
				a[++h] = x[i];
				a[++h] = y[i];
			}
		}else{
			if(a[h] == x[i])a[++h] = y[i];
			else a[++h] = x[i];
		}
	}
for(int i =1;i<=h;i++)lian[a[i]] = i;
//把链求出                            
int ans =0 ;
for(int i=1;i<=n;i++){
	ans+=query(n)-query(lian[i]);
	upd(1,lian[i]);
   //计算逆序对个数
}cout << ans << endl;
}

(注:我知道这份代码显然是错误的,但我想知道为啥会全RE

2022/8/13 18:56
加载中...