码迷,mamicode.com
首页 > 编程语言 > 详细

2017-10-5模拟赛T2 小Z爱排序(sorting.*)

时间:2017-10-29 12:51:42      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:sort   规律   拓展   .com   就是   one   sed   动态   span   

Description


技术分享

技术分享

技术分享

Solution


比赛时找到了规律,但是没有证出来……(当然最后还是AC了……)

显然没有被操作的数在排好序的序列中一定是连续的一段。

所以,没有被操作的数一定从左到右连续地递增(例如23456)。

而题目要求被操作的数尽量少,就是没有被操作的数尽可能多,找到满足条件的最长的一段就可以了。


例如,对于数据1 4 5 3 2 6 7 9 8,最长的一段为45678,所以最少操作次数为4。

附方法:

3放前=>314526798

2放前=>231456798

1放前=>123456798

9放后=>123456789


言归正传,找出这个最长的一段的长度len,则n-len即为答案。

类似动态规划,对于第i个数a,如果a!=1且前面出现a-1(可以用数组维护),那么f[i]=f[出现a-1的位置]+1,否则f[i]=1。则答案为n-f[n]。复杂度O(n)。


拓展:

①如果题目要求找出方法呢?(当然得有spj)

②如果不是1~n的排列而是可以有重复的数呢?

Code


 

技术分享
404 Not Found
View Code

 

2017-10-5模拟赛T2 小Z爱排序(sorting.*)

标签:sort   规律   拓展   .com   就是   one   sed   动态   span   

原文地址:http://www.cnblogs.com/hotwords/p/7749651.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!