1352: New Sorting Algorithm

Time Limit: 1 Sec  Memory Limit: 128 MB

Description

We are trying to use a new sorting algorithm to sort a sequence with distinct integers.
    This algorithm will be end if the sequence is already in increasing order from left to right. Or for each step, suppose x is the leftmost integer, and y is the largest integer which is smaller than x in this sequence, we will move x to the right of y if y exists, otherwise we will move x to the right of the rightmost integer.
    So, how many steps will we use to sort a specific sequence with distinct integers by this new sorting algorithm?
    For example, we will use 7 steps to sort the sequence 7 1 5 2:
    7 1 5 2 --> 1 5 7 2 --> 5 7 2 1 --> 7 2 5 1 --> 2 5 7 1 --> 5 7 1 2 --> 7 1 2 5 --> 1 2 5 7

Input

The first line has an integer T, means there are T test cases.
    For each test case, there is one integer N (2 <= N <= 105) in the first line, means the sequence has N distinct integers. Then there are N integers in the next line describing this sequence. Every integer of this sequence is in range [0, 109].
    The size of the input file will not exceed 5MB.

Output

For each test case, print an integer in one line, indicates the number of steps we will use to sort this sequence by the new soring algorithm.

Sample Input

3
3
3 7 8
4
7 1 5 2
5
5 4 3 2 1

Sample Output

0
7
10

HINT

 

Source

中南大学第一届长沙地区程序设计邀请赛

对于节点X 。f(x)=i+1 。 {X-1 ,X -2 ,...X-i}均在X左端出现。

1、1的右边没有升序排列好  。

Ans=  f(1) + f(2) +.....f(N) ;

2 、1的右边升序排列好

Ans=  f(num[1]) + f(num[2]) +.....f(num[1所在位置-1]) ;

#include <iostream>
#include <string>
#include <string.h>
#include <map>
#include <stdio.h>
#include <algorithm>
#include <queue>
#include <vector>
#include <math.h>
#include <set>
#define Max(a,b) ((a)>(b)?(a):(b))
#define Min(a,b) ((a)<(b)?(a):(b))
typedef long long LL ; using namespace std; const int Max_N = ; struct Node{
int id ;
int num ;
friend bool operator < (const Node A ,const Node B){
return A.num < B.num ;
}
}; Node node[Max_N] ;
int Left[Max_N] ;
int num[Max_N] ;
int N ; int find_Left(int x){
if(Left[x] == x)
return x ;
else
return Left[x] = find_Left(Left[x]) ;
} LL gao(){
LL sum = ;
int R ,i , j ,ok = ;
for(i = node[].id ; i < N ; i++){
if(num[i] > num[i+]){
ok = ;
break ;
}
}
if(ok)
R = N ;
else
R = node[].id - ;
for(i = ; i <= R ; i++){
int n = num[i] ;
find_Left(n) ;
find_Left(n-) ;
sum += (LL)(Left[n] - n + ) ;
if(Left[n-] != Left[n])
Left[n-] = Left[n] ;
}
return sum ;
} int main(){
int T ;
cin>>T ;
while(T--){
scanf("%d",&N) ;
for(int i = ; i <= N ; i++){
Left[i] = i ;
node[i].id = i ;
scanf("%d",&node[i].num) ;
}
sort(node+ ,node++N) ;
for(int i = ; i <= N ; i++)
num[node[i].id] = i ;
/* for(int i = 1 ; i <= N ; i++)
printf("%d ",num[i]) ;
puts("") ;*/
cout<<gao()<<endl ;
}
return ;
}

中南大学第一届长沙地区程序设计邀请赛 New Sorting Algorithm的更多相关文章

  1. 中南大学第一届长沙地区程序设计邀请赛 To Add Which?

    1350: To Add Which? Time Limit: 1 Sec  Memory Limit: 128 MB Description There is an integer sequence ...

  2. Minieye杯第十五届华中科技大学程序设计邀请赛现场同步赛 I Matrix Again

    Minieye杯第十五届华中科技大学程序设计邀请赛现场同步赛 I Matrix Again https://ac.nowcoder.com/acm/contest/700/I 时间限制:C/C++ 1 ...

  3. Minieye杯第十五届华中科技大学程序设计邀请赛网络赛D Grid(简单构造)

    链接:https://ac.nowcoder.com/acm/contest/560/D来源:牛客网 题目描述 Give you a rectangular gird which is h cells ...

  4. H-Modify Minieye杯第十五届华中科技大学程序设计邀请赛现场赛

    题面见 https://ac.nowcoder.com/acm/contest/700#question 题目大意是有n个单词,有k条替换规则(单向替换),每个单词会有一个元音度(单词里元音的个数)和 ...

  5. Minieye杯第十五届华中科技大学程序设计邀请赛网络赛 部分题目

    链接:https://pan.baidu.com/s/12gSzPHEgSNbT5Dl2QqDNpA 提取码:fw39 复制这段内容后打开百度网盘手机App,操作更方便哦 D    Grid #inc ...

  6. 2014嘉杰信息杯ACM/ICPC湖南程序设计邀请赛暨第六届湘潭市程序设计竞赛

    比赛链接: http://202.197.224.59/OnlineJudge2/index.php/Contest/problems/contest_id/36 题目来源: 2014嘉杰信息杯ACM ...

  7. 江西财经大学第一届程序设计竞赛 G题 小Q的口袋校园

    链接:https://www.nowcoder.com/acm/contest/115/G来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...

  8. 电信学院第一届新生程序设计竞赛题解及std

    首先非常感谢各位同学的参加,还有出题验题同学的辛勤付出 昨天想偷懒就是不想再把我C++11的style改没了,大家看不懂的可以百度一下哦,懒得再写gcc了,毕竟代码是通的 //代表的是行注释,所以那个 ...

  9. “九韶杯”河科院程序设计协会第一届程序设计竞赛 D数列重组 next_permutation

    "九韶杯"河科院程序设计协会第一届程序设计竞赛 D数列重组  next_permutation 题目 原题链接: https://ac.nowcoder.com/acm/conte ...

随机推荐

  1. Android学习笔记1 android adb启动失败问题 adb server is out of date. killing...

    下面是Android的学习笔记,原文地址. 我是使用adb devices出现如下红字错误, 使用第一种方法方法,结果关掉豌豆荚就可以了. android adb启动失败问题 adb server i ...

  2. iText导出pdf、word、图片

    一.前言 在企业的信息系统中,报表处理一直占比较重要的作用,本文将介绍一种生成PDF报表的Java组件--iText.通过在服务器端使用Jsp或JavaBean生成PDF报表,客户端采用超级连接显示或 ...

  3. SPOJ #4 Transform the Expression

    Not hard to know it is simply transform from in-order to post-order.My first idea is to build a tree ...

  4. zend studio一些常用配置

    zend studio 常用 配置 1.zend中添加注释是ctrl+slash,这个slash在哪里?如何来取消注释 slash是斜杠'/'那个键,就是在,.之后的那个. 进行注释是 ctrl+'/ ...

  5. bzoj1015 星球大战

    Description 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治者整个星系.某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝国的超级武器,并攻下了星系中几乎所有的星球.这些星球通过 ...

  6. vmware 没挂载光盘解决方案

    一定要选中上方的'已连接'

  7. 无法找到类:java.lang.ClassNotFoundException: com.mysql.jdbc.driver

    转载自:http://blog.csdn.net/huangbiao86/article/details/6428608 问题描述:连接数据库,而明明已经将mysql-connector-java-5 ...

  8. 黄聪:wordpress中remove_action、add_action、 do_action()的hook钩子都有哪些

    原文地址:http://codex.wordpress.org/Plugin_API/Action_Reference muplugins_loaded After must-use plugins ...

  9. tomcat服务器配置多个项目

    修改tomcat的server.xml文件中的Engine标签下的Host标签如下: <Host name="www.a.com" appBase="webapps ...

  10. PLSQL_PLSQL Hint用法总结(概念)

    2014-06-20 Created By BaoXinjian