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 }
  • 相关阅读:
    及时说爱
    坚持
    html5新增元素
    js call
    smarty实例教程
    JS 跨浏览器兼容问题
    CSS3中的5个有趣的新技术
    jQuery和dom转化
    前端安全问题
    js apply
  • 原文地址:https://www.cnblogs.com/aseer/p/8513584.html
Copyright © 2011-2022 走看看