#15542: 還有加快速度的空間嗎?


hshua (hshua)

學校 : 新北市立林口高級中學
編號 : 52506
來源 : [125.228.147.181]
最後登入時間 :
2024-11-10 13:26:19
d476. 区间查询 -- vijos | From: [61.219.36.121] | 發表日期 : 2018-10-13 11:28

還有加快速度的空間嗎? (ZOJ 原題給的是10s,此題為 1s)

請指點指點

#include <iostream>
#include <algorithm>
#include <string.h>
using namespace std;
#define MAX 32000
struct Data{ int x[MAX+1]; };
Data V;
//=========================================
int main(){
int u,n,m,a,b,c;
char t;
    cin>>u;
    while(u--){
        scanf("%d %d\n",&n,&m);
        V.x[0]=0;
        for(int i=1; i<n; i++){
            cin>>a; V.x[i]=a;
        }
        cin>>a; //讀取\n
        Data T=V;
        sort(T.x, T.x+n);

        for(int u=0; u<m; u++){
            cin>>t;
            if(t=='Q'){
                scanf("%d %d %d\n",&a,&b,&c);
                printf("%d\n",T.x[a+c-1]);
            }
            else if(t=='C'){
                cin>>a>>b;
                V.x[a]=b;
                T=V;
                sort(T.x, T.x+n); //重新排序
            }
        }
    }
}

 
#15543: Re:還有加快速度的空間嗎?


hshua (hshua)

學校 : 新北市立林口高級中學
編號 : 52506
來源 : [125.228.147.181]
最後登入時間 :
2024-11-10 13:26:19
d476. 区间查询 -- vijos | From: [61.219.36.126] | 發表日期 : 2018-10-13 11:38

還有加快速度的空間嗎? (ZOJ 原題給的是10s,此題為 1s)

請指點指點

#include
#include
#include
using namespace std;
#define MAX 32000
struct Data{ int x[MAX+1]; };
Data V;
//=========================================
int main(){
int u,n,m,a,b,c;
char t;
    cin>>u;
    while(u--){
        scanf("%d %d\n",&n,&m);
        V.x[0]=0;
        for(int i=1; i<n; i++){
            cin>>a; V.x[i]=a;
        }
        cin>>a; //讀取\n
        Data T=V;
        sort(T.x, T.x+n);

        for(int u=0; u<m; u++){
            cin>>t;
            if(t=='Q'){
                scanf("%d %d %d\n",&a,&b,&c);
                printf("%d\n",T.x[a+c-1]);
            }
            else if(t=='C'){
                cin>>a>>b;
                V.x[a]=b;
                T=V;
                sort(T.x, T.x+n); //重新排序
            }
        }
    }
}

修改程式(部分排序):

#include <iostream>

#include <algorithm>

#include <string.h>

#include <vector>

using namespace std;

#define MAX 32000

struct Data{

    int x[MAX+1];

};

Data V,T;

//=========================================

int main(){

int u,n,m;

char t;

int a,b,c;

    cin>>u;

    while(u--){

        scanf("%d %d\n",&n,&m);

        V.x[0]=0;

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

        cin>>a;  V.x[i]=a;

    }

    cin>>a; //讀取\n

 

        for(int u=0; u<m; u++){

            cin>>t;

            if(t=='Q'){

                scanf("%d %d %d\n",&a,&b,&c);

                T=V;

                sort(T.x+a, T.x+b); //小部分排序

                printf("%d\n",T.x[a+c-1]);

            }

            else if(t=='C'){

                scanf("%d %d\n",&a,&b);

                V.x[a]=b;

            }

        }

    }

}

 
ZeroJudge Forum