CF1546A题解
CF1546A AquaMoon and Two Arrays
交一发暴力题解。首先,判断两个Array的和是否相同,如果不同,我们无法通过调整来使得两个Array相同,若相同,则需要通过以下方式进行调整:
- 判断两个Array是否相同,相同则输出0
- 若不同,统计目标Array和原始Array每个元素的差
diff_{i} - 循环所有
diff_{i}>0 ,暴力将diff_{i}<0 与其一一对应,操作次数则为所有大于的diff_{i} 之和。
代码如下:
import java.util.*;
import java.io.*;
public class Main {
static int n,m;
static int p;
static int cnt,sum;
static int[] A,C;
static int[] B;
public static void main(String[] args)throws IOException {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
n = in.nextInt();
for(int x=0;x<n;x++) {
sum = 0;
m = in.nextInt();
A = new int[m];C = new int[m];B = new int[m];
int sum1=0,sum2=0;
for(int i=0;i<m;i++) {
A[i] = in.nextInt();
sum1 += A[i];
}
for(int i=0;i<m;i++) {
C[i] = in.nextInt();
sum2 += C[i];
}
if(sum1!=sum2) {
System.out.println(-1);
}
else {
boolean g = true;
for(int i=0;i<m;i++) {
if(A[i]!=C[i]) {
g = false;
}
}
if(g==true) {
System.out.println(0);
}
else {
for(int i=0;i<m;i++) {
B[i] = A[i]-C[i];
}
for(int i=0;i<m;i++) {
if(B[i]>0) {
sum+=B[i];
}
}
System.out.println(sum);
for(int i=0;i<m;i++) {
if(B[i]>0) {
for(int j=0;j<m;j++) {
if(B[j]<0) {
while(B[i]>0&&B[j]<0) {
B[i]--;B[j]++;
int a = i+1;int b = j+1;
System.out.println(a+" "+b);
}
}
}
}
}
}
}
}
}
}