30pts求助大佬|并查集
查看原帖
30pts求助大佬|并查集
429818
Smithespics楼主2023/4/7 10:57

这道题目的第一思路就是并查集,结果过不了,只有30分,其他全是TLE

#include<bits/stdc++.h>
#define int long long
using namespace std;
int fa[100005];
int q,n;
int d[100005],c[100005];

inline int query(int i,int t){
	t-=c[i];
	if(t<=0)	return i;
	if(fa[i]==i){
		if(t>0)	return 0;
		return i;
	}
	return query(fa[i],t);
}
signed main(){
	cin >> n >> q;
	for(int i=1;i<=n;i++)	fa[i]=i;
	for(int i=1;i<=n;i++){
		cin >> d[i] >> c[i];
		for(int j=i-1;j>=1;j--){
			if(d[j]>=d[i])	break;
			if(fa[j]==j)	fa[j]=i;
		}
	}	
	int r,v;
	while(q--){
		cin >> r >> v;
		cout << query(r,v) << endl;
	}
	return 0;
}
2023/4/7 10:57
加载中...