#24697: 已經加速了還是TLE 求解


angus.93321@gmail.com (bluemoon0321)

學校 : 國立科學工業園區實驗高級中學
編號 : 139711
來源 : [114.136.48.221]
最後登入時間 :
2021-08-21 11:35:29
b938. kevin 愛殺殺 | From: [42.72.174.45] | 發表日期 : 2021-03-15 12:31

#include<bits/stdc++.h>

using namespace std;

struct line{

    int num;

    line * next;

};

int main(){

    ios::sync_with_stdio(0);

    cin.tie(0);

    int n,m;

    cin>>n>>m;

    line *a;

    a=new line;

    a->num=1;

    a->next=NULL;

    line* current=a;

    for(int i=1;i<n;i++){

        current->next=new line;

        current=current->next;

        current->num=i+1;

        current->next=NULL;

    }

    while(m--){

        int k;

        cin>>k;

        line* cur=a;

        line *pre;

        while(cur!=NULL&&(cur->num)<k){

            pre=cur;

            cur=cur->next;

        }

        if(cur==NULL||(cur->num)>k){

            cout<<"0u0 ...... ?"<<'\n';

        }

        else {

            auto temp=cur;

            cur=cur->next;

            if(cur==NULL){

                cout<<"0u0 ...... ?"<<'\n';

                continue;

            }

            cout<<cur->num<<'\n';

            auto next_n=cur->next;

            delete cur;

            temp->next=next_n;

        }

    }

}

 

 
#24698: Re:已經加速了還是TLE 求解


fire5386 (becaidorz)

學校 : 國立清華大學
編號 : 115822
來源 : [59.115.180.44]
最後登入時間 :
2024-05-03 16:46:17
b938. kevin 愛殺殺 | From: [120.106.165.195] | 發表日期 : 2021-03-15 13:49

#include<bits/stdc++.h>

using namespace std;

struct line{

    int num;

    line * next;

};

int main(){

    ios::sync_with_stdio(0);

    cin.tie(0);

    int n,m;

    cin>>n>>m;

    line *a;

    a=new line;

    a->num=1;

    a->next=NULL;

    line* current=a;

    for(int i=1;i<n;i++){

        current->next=new line;

        current=current->next;

        current->num=i+1;

        current->next=NULL;

    }

    while(m--){

        int k;

        cin>>k;

        line* cur=a;

        line *pre;

        while(cur!=NULL&&(cur->num)<k){

            pre=cur;

            cur=cur->next;

        }

        if(cur==NULL||(cur->num)>k){

            cout<<"0u0 ...... ?"<<'\n';

        }

        else {

            auto temp=cur;

            cur=cur->next;

            if(cur==NULL){

                cout<<"0u0 ...... ?"<<'\n';

                continue;

            }

            cout<num<<'\n';

            auto next_n=cur->next;

            delete cur;

            temp->next=next_n;

        }

    }

}

 

這樣一個一個找太慢了,O(n^2)

用二分搜尋法

 
ZeroJudge Forum