求问时间复杂度
  • 板块学术版
  • 楼主aCssen
  • 当前回复5
  • 已保存回复5
  • 发布时间2023/12/17 15:11
  • 上次更新2023/12/17 16:59:01
查看原帖
求问时间复杂度
534296
aCssen楼主2023/12/17 15:11

RT,自己分析的是 O(nlog⁡n+mlog⁡n)\mathcal{O}(n \log n+m \log n) 的,但 T 了一大堆。

#include<algorithm>
#include<iostream>
#include<cstdio>
#include<vector>
using namespace std;
const int maxn=2e5+5;
struct node{
	int l,d;
}a[maxn];
int p[maxn],n,m;
vector<int>v;
long long ans;
int main(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++){
		scanf("%d",&p[i]);
		v.push_back(p[i]);
		ans+=p[i];
	}
	sort(v.begin(),v.end());
	for(int i=1;i<=m;i++)
		scanf("%d",&a[i].l);
	for(int i=1;i<=m;i++)
		scanf("%d",&a[i].d);
	sort(a+1,a+m+1,[](node a,node b){return a.d>b.d;});
	for(int i=1;i<=m;i++){
		auto pos=lower_bound(v.begin(),v.end(),a[i].l);
		if(pos!=v.end()){
			ans-=a[i].d;
			v.erase(pos);
		}
	}
	printf("%lld",ans);
	return 0;
}
2023/12/17 15:11
加载中...