博客
关于我
HDU 5500 Reorder the Books思维题
阅读量:634 次
发布时间:2019-03-14

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

dxy has a collection of a series of books called “The Stories of SDOI”,There are n(n≤19) books in this series.Every book has a number from 1 to n.

dxy puts these books in a book stack with the order of their numbers increasing from top to bottom. dxy takes great care of these books and no one is allowed to touch them.
One day Evensgn visited dxy’s home, because dxy was dating with his girlfriend, dxy let Evensgn stay at home himself. Evensgn was curious about this series of books.So he took a look at them. He found out there was a story about “Little E&Little Q”. While losing himself in the story,he disrupted the order of the books.
Knowing that dxy would be back soon,Evensgn needed to get the books ordered again.But because the books were too heavy.The only thing Evensgn could do was to take out a book from the book stack and and put it at the stack top.
Give you the order of the disordered books.Could you calculate the minimum steps Evensgn would use to reorder the books? If you could solve the problem for him,he will give you a signed book “The Stories of SDOI 9: The Story of Little E” as a gift.
Input
There are several testcases.
There is an positive integer T(T≤30) in the first line standing for the number of testcases.
For each testcase, there is an positive integer n in the first line standing for the number of books in this series.
Followed n positive integers separated by space standing for the order of the disordered books,the ith integer stands for the ith book’s number(from top to bottom).
Hint:
For the first testcase:Moving in the order of book3,book2,book1 ,(4,1,2,3)→(3,4,1,2)→(2,3,4,1)→(1,2,3,4),and this is the best way to reorder the books.
For the second testcase:It’s already ordered so there is no operation needed.
Output
For each testcase,output one line for an integer standing for the minimum steps Evensgn would use to reorder the books.
Sample Input
2
4
4 1 2 3
5
1 2 3 4 5
Sample Output
3
0

解题思路:题中给出n个1-n范围的不重复的数,要求把这些数字按要求排序(只能从数列中抽出一个数放到最前面)所需的最小步数,看案例可知是从小到大排序。

所以得出结论:从后往前找,求出不满足条件的书的个数,就是它的最小步数。这里注意只要满足从后往前递减,就相当于满足条件。

理由:

从最后一个数开始往前搜索n次,碰到a[i]==n 就把 n-- ,这样最后可以得到n就是不满足序列从后往前递减的个数,就是答案。
因为所有不满足从后往前递减的数应该被抽出放在最前面,但是什么时候抽出不重要,但题中要求最小步,所以先抽出大的数放在最前面(不然又构成逆序),依次抽出就满足序列要求,最小步就是不满足条件的数的个数。大家用例子试试。

#include
int main(){ int i,j,t,n,a[20]; scanf("%d",&t); while(t--) { int ans = 0,max; scanf("%d",&n); for(i=1; i<=n; ++i) scanf("%d",&a[i]); for(i=n; i>0; --i) if(a[i]==n) n--; ans = n; printf("%d\n",ans); } return 0;}/*解题思路:求得不满足排序条件的数的个数就是最小步*/

转载地址:http://fcxoz.baihongyu.com/

你可能感兴趣的文章
MySQL中interactive_timeout和wait_timeout的区别
查看>>
mysql中int、bigint、smallint 和 tinyint的区别、char和varchar的区别详细介绍
查看>>
mysql中json_extract的使用方法
查看>>
mysql中json_extract的使用方法
查看>>
mysql中kill掉所有锁表的进程
查看>>
mysql中like % %模糊查询
查看>>
MySql中mvcc学习记录
查看>>
mysql中null和空字符串的区别与问题!
查看>>
MySQL中ON DUPLICATE KEY UPDATE的介绍与使用、批量更新、存在即更新不存在则插入
查看>>
MYSQL中TINYINT的取值范围
查看>>
MySQL中UPDATE语句的神奇技巧,让你操作数据库如虎添翼!
查看>>
Mysql中varchar类型数字排序不对踩坑记录
查看>>
MySQL中一条SQL语句到底是如何执行的呢?
查看>>
MySQL中你必须知道的10件事,1.5万字!
查看>>
MySQL中使用IN()查询到底走不走索引?
查看>>
Mysql中使用存储过程插入decimal和时间数据递增的模拟数据
查看>>
MySql中关于geometry类型的数据_空的时候如何插入处理_需用null_空字符串插入会报错_Cannot get geometry object from dat---MySql工作笔记003
查看>>
mysql中出现Incorrect DECIMAL value: '0' for column '' at row -1错误解决方案
查看>>
mysql中出现Unit mysql.service could not be found 的解决方法
查看>>
mysql中出现update-alternatives: 错误: 候选项路径 /etc/mysql/mysql.cnf 不存在 dpkg: 处理软件包 mysql-server-8.0的解决方法(全)
查看>>