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

你可能感兴趣的文章
Node-RED中使用html节点爬取HTML网页资料之爬取Node-RED的最新版本
查看>>
Node-RED中使用JSON数据建立web网站
查看>>
Node-RED中使用json节点解析JSON数据
查看>>
Node-RED中使用node-random节点来实现随机数在折线图中显示
查看>>
Node-RED中使用node-red-browser-utils节点实现选择Windows操作系统中的文件并实现图片预览
查看>>
Node-RED中使用node-red-contrib-image-output节点实现图片预览
查看>>
Node-RED中使用node-red-node-ui-iframe节点实现内嵌iframe访问其他网站的效果
查看>>
Node-RED中使用Notification元件显示警告讯息框(温度过高提示)
查看>>
Node-RED中使用range范围节点实现从一个范围对应至另一个范围
查看>>
Node-RED中实现HTML表单提交和获取提交的内容
查看>>
Vue3+elementplus实现图片上传下载(最强实践)
查看>>
Node-RED中将CSV数据写入txt文件并从文件中读取解析数据
查看>>
Node-RED中建立TCP服务端和客户端
查看>>
Node-RED中建立Websocket客户端连接
查看>>
Node-RED中建立静态网页和动态网页内容
查看>>
Vue3+Element-ul学生管理系统(第二十二课)
查看>>
Node-RED中怎样让网站返回JSON数据
查看>>
Node-RED中根据HTML文件建立Web网站
查看>>
Node-RED中解析高德地图天气api的json数据显示天气仪表盘
查看>>
Node-RED中连接Mysql数据库并实现增删改查的操作
查看>>