博客
关于我
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/

你可能感兴趣的文章
MySQL5.7.18主从复制搭建(一主一从)
查看>>
MySQL5.7.19-win64安装启动
查看>>
mysql5.7.19安装图解_mysql5.7.19 winx64解压缩版安装配置教程
查看>>
MySQL5.7.37windows解压版的安装使用
查看>>
mysql5.7免费下载地址
查看>>
mysql5.7命令总结
查看>>
mysql5.7安装
查看>>
mysql5.7性能调优my.ini
查看>>
MySQL5.7新增Performance Schema表
查看>>
Mysql5.7深入学习 1.MySQL 5.7 中的新增功能
查看>>
Webpack 之 basic chunk graph
查看>>
Mysql5.7版本单机版my.cnf配置文件
查看>>
mysql5.7的安装和Navicat的安装
查看>>
mysql5.7示例数据库_Linux MySQL5.7多实例数据库配置
查看>>
Mysql8 数据库安装及主从配置 | Spring Cloud 2
查看>>
mysql8 配置文件配置group 问题 sql语句group不能使用报错解决 mysql8.X版本的my.cnf配置文件 my.cnf文件 能够使用的my.cnf配置文件
查看>>
MySQL8.0.29启动报错Different lower_case_table_names settings for server (‘0‘) and data dictionary (‘1‘)
查看>>
MYSQL8.0以上忘记root密码
查看>>
Mysql8.0以上重置初始密码的方法
查看>>
mysql8.0新特性-自增变量的持久化
查看>>