排队
来源:互联网 发布:bioeffect蓓欧菲 知乎 编辑:程序博客网 时间:2024/05/01 18:58
import java.util.Scanner;
public class paidui{
static int n;
static int[] s;
static int bugaoxing = 99999;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
s = new int[n];
int[][] count = new int[n][2];
for (int i = 0; i < n; i++) {
s[i] = sc.nextInt();
count[i][0] = 0;
count[i][1] = 0;
}
int all = exchange(findMin(count), count);
System.out.println(all);
}
static int exchange(int k, int[][] count) {
if (isOk()) {
int temp = sum(count);
if (temp < bugaoxing)
bugaoxing = temp;
return temp;
}
else {
exchangeAll(count, k);
return exchange(findMin(count), count);
}
}
static int findMin(int[][] count) {
int[] temp = new int[n];
for (int i = 0; i < n; i++) {
temp[i] = count[i][1];
}
for (int i = 0; i < n; i++) {
int min = i;
for (int j = i + 1; j < n; j++) {
if (temp[min] > temp[j])
min = j;
}
temp[min] = temp[i];
if (min < n - 1 && s[min] > s[min + 1])
return min;
}
return n - 2;
}
static void exchangeAll(int[][] count, int k) {
int temp;
temp = s[k + 1];
s[k + 1] = s[k];
s[k] = temp;
count[k][1]++;
count[k][0] = count[k][0] + count[k][1];
count[k + 1][1]++;
count[k + 1][0] = count[k + 1][0] + count[k + 1][1];
int[] temp1 = count[k];
count[k] = count[k + 1];
count[k + 1] = temp1;
}
static boolean isOk() {
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
if (s[j] < s[i])
return false;
}
}
return true;
}
static int sum(int[][] count) {
int temp = 0;
for (int i = 0; i < n; i++)
temp += count[i][0];
return temp;
}
}
- 排队
- 排队
- 排队
- 排队
- 排队
- 排队
- 排队
- 排队
- 排队
- 排队
- 排队
- 排队论
- apache 排队!
- apache 排队!
- 排队论
- 排队上车
- 排队,dps
- 1332 排队
- Python 练习实例29
- java 中对url的编码与解码
- Spring 3.1: Caching and EhCache
- 蚂蚁感冒
- Java基础(1)
- 排队
- Linux与Windows多线程对比
- Javascript实现二级联动菜单
- 如何做一名优秀的产品经理
- AFNetworking 3.0迁移指南
- MySQL数据备份之mysqldump使用
- java之Asymmetric encryption techniques
- 十字图
- EL表达式语言