求计算下复杂度(代码很短
查看原帖
求计算下复杂度(代码很短
784813
SakurajiamaMai楼主2023/10/7 11:46

我怎么算感觉也是n^2的复杂度啊?题解区有很多n^2的代码,真的都是正确的嘛? 求大佬算一下这份代码的复杂度是多少?

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=2e5+10;
int n,m,res,num;
int ans,cnt,sum;
struct node
{
    int x,y;
    bool operator<(const node&w)const
    {
        if(x==w.x) return y<w.y;
        else return x<w.x;
    }
}poke[N];
queue<int>que;
bool operator ==(const node &a,const node &b)
{
	return (a.x==b.x&&a.y==b.y);
}
void clear_(){
    while(!que.empty()) que.pop();
}
signed main()
{
    cin>>n;
    for(int i=1;i<=n;i++) cin>>poke[i].x>>poke[i].y;
    sort(poke+1,poke+1+n);
    num=unique(poke+1,poke+1+n)-poke-1;
    for(int i=1;i<=num;i++){
        if(poke[i].x!=poke[i-1].x) clear_();
        while(que.size()&&poke[i].y-que.front()>=n) que.pop();
        que.push(poke[i].y);
        res=max(res,(int)que.size());
    }
    cout<<n-res;
    return 0;
}

2023/10/7 11:46
加载中...