蒟蒻们的O(1/2 N^2)算法,pt70
查看原帖
蒟蒻们的O(1/2 N^2)算法,pt70
477036
ParseY_Pasy楼主2021/10/23 20:44
#include <bits/stdc++.h>
using namespace std;
struct fruit{
    short type;
    int ID;
};
list<fruit> m;//水果数组
int n,type;
short a;
int main()
{
    scanf("%d",&n);
    for(int i = 0;i<n;i++){
        scanf("%hd",&a);
        fruit b{a,i+1};
        m.push_back(b);
    }
    //输入
    while(!m.empty()){
        type = 2;//任意数据均可为开头
        for(list<fruit>::iterator iter = m.begin();iter != m.end();iter++){
            if(type != iter->type){
                type = iter->type;
                printf("%d ",iter->ID);
                m.erase(iter--);
            }//当前的水果不同
        }
        printf("\n");
    }
    return 0;
}

如代码,在朴素O(N^2)算法基础上加入链表优化,使得每次O(N)搜寻块的复杂度下降一点,近似复杂度为O(1/2*N^2)

但就算这样优化还是70ptQAQ

2021/10/23 20:44
加载中...