zoukankan      html  css  js  c++  java
  • Aiiage Camp Day6 J Sort

    题意

      给出一个排列,每次操作可以交换相邻的两个值。使用若干次该操作使得数组有序。

      问操作是否唯一。

    题解

      操作唯一当且仅当最长上升子序列长度>=n - 1。

      

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 
     4 int a[100010];
     5 
     6 int main()
     7 {
     8     int T;
     9     for (scanf("%d", &T); T; T--)
    10     {
    11         int n;
    12         scanf("%d", &n);
    13         for (int i = 0; i < n; ++i)
    14             scanf("%d", &a[i]);
    15         vector<int > v;
    16         v.push_back(a[0]);
    17         for (int i = 1; i < n; ++i)
    18             if (a[i] > v[v.size() - 1])
    19                  v.push_back(a[i]);
    20             else
    21             {
    22                 int l(0), r(v.size() - 1);
    23                 while (l < r)
    24                 {
    25                     int mid = (l + r) / 2;
    26                     if (a[i] > v[mid])
    27                         l = mid + 1;
    28                     else
    29                         r = mid;
    30                 }
    31                 v[l] = a[i];
    32             }
    33         if (v.size() >= n - 1)
    34             puts("Y");
    35         else
    36             puts("N");
    37     }
    38     
    39     return 0;
    40 }
  • 相关阅读:
    WTM
    Spring Cloud
    Dapper
    Linux 常用命令
    JsonNetResult
    百度 副文本编译器
    GIT使用—一些概念
    GIT使用—创建一个版本库
    GIT使用—安装配置及工作流程
    灰度发布
  • 原文地址:https://www.cnblogs.com/aseer/p/8513584.html
Copyright © 2011-2022 走看看