1 solutions

  • 3
    @ 2024-5-8 20:59:55

    B3694 数列离散化

    别以为它看上去繁琐,很简单就能搞定! 代码如下(原本过程不懂的去看ppt)

    #include<bits/stdc++.h>
    using namespace std;    			
    int a[114514],b[114514]; //a原数组,b备份
    int main(){
        int T;
        cin>>T;
        while(T--){
        	memset(a,0,sizeof(a));
        	memset(b,0,sizeof(b));//清0
        	int n;
        	cin>>n;
        	for(int i=0;i<n;i++){
        		cin>>a[i];
        		b[i]=a[i];
    		}//输入2数组
    		sort(b,b+n);//对b数组排序
    		int l=unique(b,b+n)-b;//去重
    		for(int i=0;i<n;i++)
    		cout<<lower_bound(b,b+l,a[i])-b+1<<" ";//二分查找
    		cout<<endl;
    	}
        return 0;
    }
    

    其实,很多东西有库函数,我们直接调用就行了 点赞!!!

    • 1

    Information

    ID
    1072
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    6
    Tags
    (None)
    # Submissions
    20
    Accepted
    10
    Uploaded By