博客
关于我
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 错误
查看>>
mysql 随机数 rand使用
查看>>
MySQL 面试题汇总
查看>>
MySQL 面试,必须掌握的 8 大核心点
查看>>
MySQL 高可用性之keepalived+mysql双主
查看>>
MySQL 高性能优化规范建议
查看>>
mysql 默认事务隔离级别下锁分析
查看>>
Mysql--逻辑架构
查看>>
MySql-2019-4-21-复习
查看>>
mysql-5.6.17-win32免安装版配置
查看>>
mysql-5.7.18安装
查看>>
MySQL-Buffer的应用
查看>>
mysql-cluster 安装篇(1)---简介
查看>>
mysql-connector-java.jar乱码,最新版mysql-connector-java-8.0.15.jar,如何愉快的进行JDBC操作...
查看>>
mysql-connector-java各种版本下载地址
查看>>
mysql-EXPLAIN
查看>>
MySQL-Explain的详解
查看>>
mysql-group_concat
查看>>
MySQL-redo日志
查看>>
MySQL-【1】配置
查看>>