zoukankan      html  css  js  c++  java
  • Codeforces 847B

    847B - Preparing for Merge Sort

    思路:前面的排序的最后一个一定大于后面的排序的最后一个。所以判断要不要开始新的排序只要拿当前值和上一个排序最后一个比较就可以了。

    代码:

    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long
    #define pb push_back
    #define mem(a,b) memset(a,b,sizeof(a))
    
    const int N=2e5+5;
    int a[N];
    vector<int>ans[N];
    int Max[N];
    int main()
    {
        /*ios::sync_with_stdio(false);
        cin.tie(0);*/
        
        int n;
        scanf("%d",&n);
        for(int i=0;i<n;i++)scanf("%d",&a[i]);
        
        int cnt=0;
        for(int i=0;i<n;i++)
        {
            if(ans[cnt].size()!=0&&a[i]<=ans[cnt].back())
            {
                ans[++cnt].pb(a[i]);
                continue;
            }
            else if(ans[cnt].size()==0)ans[cnt].pb(a[i]);
            for(int j=0;j<=cnt;j++)//这里可以用二分优化,把每个排序的最后一个放进数组里,构成线性关系
            {
                if(ans[j].size()==0||a[i]>ans[j].back())
                {
                    ans[j].pb(a[i]);
                    break;
                }
            }
        }
        
        for(int i=0;i<=cnt;i++)
        {
            for(int j=0;j<ans[i].size();j++)
            {
                printf("%d ",ans[i][j]);
            }
            printf("
    ");
        }
        return 0;
    }
  • 相关阅读:
    【安装软件的点点滴滴】
    【自然语言处理】LDA
    【sklearn】数据预处理 sklearn.preprocessing
    【sklearn】中文文档
    【MySql】update用法
    DotNet Core
    ASP.NET MVC
    ADO.NET
    RESTful API
    C#
  • 原文地址:https://www.cnblogs.com/widsom/p/7569359.html
Copyright © 2011-2022 走看看