#10651: 提供新想法


ccu499410020 (笹川了平)


因為題目有說他們各自的數列不重複且已排序

所以其實可以把兩數列 merge 起來

找到成雙成對的就是兩人重複的數

這個方法可以讓時間複雜度降到 O(nm)

-------------------------------

雖然說我懶得寫 merge fuction

而直接用內建的 qsort 啦 <= O(nm log m)

#10806: Re:提供新想法


johnnyjong823 (johnny)


因為題目有說他們各自的數列不重複且已排序

所以其實可以把兩數列 merge 起來

找到成雙成對的就是兩人重複的數

這個方法可以讓時間複雜度降到 O(nm)

-------------------------------

雖然說我懶得寫 merge fuction

而直接用內建的 qsort 啦 <= O(nm log m)

 

package 高中生;

 

import java.util.Arrays;

import java.util.Collections;

import java.util.Scanner;

 

public class d478共同的數簡易版 {

 

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        while (sc.hasNext()) {

            int time = sc.nextInt();

            int nu = sc.nextInt();

            int[] n1 = new int[nu*2];

            while (time-- > 0) {

                int count = 0;

                for (int i = 0; i < n1.length ; i++) {

                    n1[i] = sc.nextInt();

                }

                Arrays.sort(n1);

                for (int i = 0; i < n1.length - 1; i++) {

                    if (n1[i] == n1[i + 1]) {

                        count++;

                        i++;

                    }

                }

                System.out.println(count);

            }

        }

    }

 

}

我將此實做出來

AC

花了2.5s,有點緊繃