博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Aiiage Camp Day6 J Sort
阅读量:5319 次
发布时间:2019-06-14

本文共 1106 字,大约阅读时间需要 3 分钟。

题意

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

  问操作是否唯一。

 

题解

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

  

1 #include 
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
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 else21 {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 else29 r = mid;30 }31 v[l] = a[i];32 }33 if (v.size() >= n - 1)34 puts("Y");35 else36 puts("N");37 }38 39 return 0;40 }

 

转载于:https://www.cnblogs.com/aseer/p/8513584.html

你可能感兴趣的文章
函数返回类型
查看>>
配置CLion作为Qt5开发环境
查看>>
JS搜索菜单实现
查看>>
.net程序和管理员权限的一些事
查看>>
Ubuntu 14.04下使用crontab定时弹出窗口
查看>>
SpringSecurity之记住我功能的实现
查看>>
三维数组中求某位地址
查看>>
node05-fs
查看>>
二分查找-binarySearch
查看>>
MVC自定义验证信息
查看>>
【原创】关于lxml读取文件后不能正常输出中文
查看>>
Python Open Source Project List
查看>>
第六次作业
查看>>
基于AngularJS的前端架构(上)
查看>>
Django的数据模型层实现特点
查看>>
判断鼠标向上滚动或者向上滚动触发不同的事件
查看>>
UML用例图
查看>>
Windows平台下不同版本SVN对比
查看>>
在微服务中使用领域事件
查看>>
Logo设计谈(上)
查看>>