求分析
  • 板块题目总版
  • 楼主hlnoi
  • 当前回复7
  • 已保存回复7
  • 发布时间2025/1/23 10:51
  • 上次更新2025/1/23 13:46:22
查看原帖
求分析
1470008
hlnoi楼主2025/1/23 10:51
#include<bits/stdc++.h>
using namespace std;

struct baoling{
	int pos;
	int sum;
};
baoling a[100005];

bool cmp(baoling a,baoling b){
	return a.sum<b.sum;
}

int main(){
	int n;
	cin >>n;
	for(int i=1;i<=n;i++){
		cin >>a[i].sum;
		a[i].pos=i;
	}
	sort(a+1,a+n+1,cmp);
	int q;
	cin >>q;
	for(int i=1;i<=q;i++){
		int l=1,r=n,mid,ans=0;
		int m;
		cin >>m;
		while(l<=r){
			mid=(l+r)/2;
			if(m>a[mid].sum){
				l=mid+1;
			}
			else if(m<a[mid].sum){
				r=mid-1;
			}
			else{
				ans=a[mid].pos;
				break;
			}
		}
		cout <<ans<<endl;
	}
	return 0;
}

这题如果用结构体排序+二分查找的方法做,那时间复杂度是啥?求解答

代码:

2025/1/23 10:51
加载中...