CF1546A题解

· · 题解

CF1546A AquaMoon and Two Arrays

交一发暴力题解。首先,判断两个Array的和是否相同,如果不同,我们无法通过调整来使得两个Array相同,若相同,则需要通过以下方式进行调整:

  1. 判断两个Array是否相同,相同则输出0
  2. 若不同,统计目标Array和原始Array每个元素的差diff_{i}
  3. 循环所有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);
                                }
                            }
                            }
                        }
                    }
                }
            }

        }
    }

}