zoukankan      html  css  js  c++  java
  • (Java实现) 光荣的梦想

    光荣的梦想

    Time Limit:10000MS Memory Limit:65536K
    Total Submit:110 Accepted:45

    Description

    Prince对他在这片大陆上维护的秩序感到满意,于是决定启程离开艾泽拉斯。在他动身之前,Prince决定赋予King_Bette最强大的能量以守护世界、保卫这里的平衡与和谐。在那个时代,平衡是个梦想。因为有很多奇异的物种拥有各种不稳定的能量,平衡瞬间即被打破。KB决定求助于你,帮助他完成这个梦想。

    一串数列即表示一个世界的状态。

    平衡是指这串数列以升序排列。而从一串无序数列到有序数列需要通过交换数列中的元素来实现。KB的能量只能交换相邻两个数字。他想知道他最少需要交换几次就能使数列有序。

    Input

    第一行为数据的组数N。对于每组数据,第一行为数列中数的个数n,第二行为n <= 10000个数。表示当前数列的状态。

    Output

    输出一个整数,表示最少需要交换几次能达到平衡状态。

    Sample Input

    4
    2 1 4 3
    Sample Output

    2

    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Scanner;
    
    
    public class guangrongdemengxiang {
    	public static void main(String[] args) {
    		ArrayList<Integer> list = new ArrayList<Integer>();
    		Scanner sc = new Scanner(System.in);
    		int n = sc.nextInt(),mid = 0,sum=0;
    		int [] num = new int [n];
    		for (int i = 0; i < num.length; i++) {
    			num[i]=sc.nextInt();
    			list.add(num[i]);
    		}
    		Arrays.sort(num);
    		for (int i = 0; i < num.length; i++) {
    			if(num[i]==list.get(i)) continue;
    			for (int start = 0,end=num.length-1;;) {
    				mid=(start+end)/2;
    				if(num[mid]<list.get(i)){
    					if(mid==start){
    						start=end;
    						continue;
    					}
    					start=mid;
    					end=num.length-1;
    				}
    				else if(num[mid]>list.get(i)){
    					start=0;
    					end=mid;
    				}
    				else{
    					int temp = list.remove(i);
    					list.add(mid, temp);
    					sum+=Math.abs(mid-i);
    					break;
    				}
    			}
    		}
    		System.out.println(sum);
    	}
    
    }
    
    
  • 相关阅读:
    PAT 1088. Rational Arithmetic
    PAT 1087. All Roads Lead to Rome
    PAT 1086. Tree Traversals Again
    PAT 1085. Perfect Sequence
    PAT 1084. Broken Keyboard
    PAT 1083. List Grades
    PAT 1082. Read Number in Chinese
    求最大公因数
    [转载]Latex文件转成pdf后的字体嵌入问题的解决
    [转载]Matlab有用的小工具小技巧
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13079053.html
Copyright © 2011-2022 走看看