[JAVA] AtCoder Beginner Contest 182 Teilnahmeartikel

Teilnahme am AtCoder Beginner Contest 182 ca. 20 Minuten zu spät. Nun, selbst wenn es pünktlich ist, kann ich es nicht beenden, also werde ich tun, was ich kann.

A - twiblr

Berechnen Sie einfach die Obergrenze der Anzahl der Follower gemäß den Regeln und subtrahieren Sie die aktuelle Anzahl der Follower.

import java.util.*;
 
public class Main {
    public static void main(String[] args) {
        try(Scanner s = new Scanner(System.in)){
        	System.out.println(s.nextInt() * 2 + 100 - s.nextInt());
        }
    }
}

B - Almost GCD Sollten wir nicht die maximale Anzahl von Versprechungen mit der euklidischen Methode der gegenseitigen Teilung finden? Ich dachte, aber das Beispiel hat mich überzeugt. Es wäre schlecht, wenn das maximale Gesamtversprechen 1 wäre. Dann bemerkte ich, als ich dachte, ich sollte jede Zahl in Primfaktoren zerlegen und die mit vielen gemeinsamen Primfaktoren auswählen. Ist es dann nicht viel anders, selbst wenn Sie versuchen, alles von Anfang an zu teilen?

import java.util.*;

public class Main {
    public static void main(String[] args) {
        try (Scanner s = new Scanner(System.in)) {
            int n = s.nextInt();
            int[] a = new int[n];
            int max = 0;
            for (int i = 0; i < n; i++) {
                a[i] = s.nextInt();
                max = Math.max(max, a[i]);
            }
            int maxCount = 0;
            int tempK = 0;
            for (int k = 2; k <= max; k++) {
                int count = 0;
                for (int x : a) {
                    if (x % k == 0) {
                        count++;
                    }
                }
                if (count > maxCount) {
                    tempK = k;
                    maxCount = count;
                    if (maxCount == n) {
                        break;
                    }
                }
            }
            System.out.println(tempK);
        }
    }
}

C - To 3 Der Rest der Division einer Zahl durch 3 entspricht dem Rest der Division der Summe der Zahlen an jeder Stelle durch 3. Da der Rest der Geschichte nur vom Rest besprochen werden kann, wird sie in jeden Teil zerlegt und in den durch 3 geteilten Rest umgewandelt. Von hier aus ist es schwierig, die Fälle zu teilen. Wenn ich denke, dass der Rest der Summe durch 0, 1 und 2 geteilt wird, bemerke ich, dass es gibt.

Wenn der gesamte Rest 1 ist und keine verbleibende 1 Stelle vorhanden ist, bilden nur der Rest 0 und der Rest 2 die Ziffern. Wenn alle Ziffern der Rest 0 sind, ist der Gesamtrest 0, und wenn nur eine Ziffer des Restes 2 vorhanden ist, sollte der Gesamtrest 2 sein. Es gibt mindestens zwei Ziffern mit einem Rest von 2. Wenn Sie diese beiden loswerden, können Sie den Rest 0 machen. Gleiches gilt, wenn der gesamte Rest 2 beträgt, sodass das Urteil in 5 Zeilen geschrieben werden kann, mit Ausnahme des Prozesses "Spalte finden".

import java.util.*;

public class Main {
    public static void main(String[] args) {
        try (Scanner s = new Scanner(System.in)) {
            int[] x = s.next().chars().map(i -> (i - '0') % 3).toArray();
            int r = Arrays.stream(x).sum() % 3;
            System.out.println(remove(x, r));
        }
    }
    
    private static int remove(int[] x, int r) {
        if (r == 0) return 0;
        if (x.length == 1) return -1;
        if (find(x, r)) return 1;
        if (x.length == 2) return -1;
        return 2;
    }
    
    private static boolean find(int[] x, int target) {
        for (int a : x) {
            if (a == target){
                return true;
            }
        }
        return false;
    }
}

D - Wandering Zuerst dachte ich, ich würde es ehrlich tun. Ich schrieb es mit Sorge um die Hinrichtungszeit, Während des Schreibens wurde ich inspiriert, die Idee der kumulativen Summe zu verwenden und sie neu zu schreiben. Da es in einer Gruppe von $ A_1 $ ~ $ A_i \ einen maximalen Betrag geben sollte, der sich in die positive Richtung bewegen kann, (i = 1,2, \ dots, N) $. Notieren und vergleichen Sie die Position, wenn die maximale Bewegung ausgeführt wird. ** Mach es hier. ** Ich wusste, dass es überlaufen würde, wenn ich es nicht lange aus dem numerischen Bereich machen würde Da das int-Array, das $ A_i $ aufzeichnet, für die kumulative Summe wiederverwendet wurde, wurde es einmal zu WA. Remake es in ein langes Array und AC.

import java.util.*;

public class Main {
    public static void main(String[] args) {
        try (Scanner s = new Scanner(System.in)) {
            s.nextLine();
            long[] a = Arrays.stream(s.nextLine().split(" "))
                                .mapToLong(Long::parseLong)
                                .toArray();
            long[] max = new long[a.length];
            max[0] = a[0];
            for (int i = 1; i < a.length; i++) {
                a[i] += a[i - 1];
                max[i] = Math.max(max[i - 1], a[i]);
            }
            
            
            long maxP = 0;
            long p = 0;
            for (int i = 0; i < a.length; i++) {
                maxP = Math.max(maxP, p + max[i]);
                p += a[i];
            }
            System.out.println(maxP);
        }
    }
}

Zu diesem Zeitpunkt waren noch ungefähr 6 Minuten übrig, und E war überhaupt nicht rechtzeitig.

Recommended Posts

AtCoder Beginner Contest 182 Teilnahmeartikel
AtCoder Anfängerwettbewerb 168
AtCoder Anfängerwettbewerb 132 D Problem
Löse den AtCoder-Anfängerwettbewerb 151 mit Java
Löse den AtCoder Beginner Contest 150 mit Java
Löse den AtCoder-Anfängerwettbewerb 153 mit Java
Löse den AtCoder-Anfängerwettbewerb 175 mit Java
Löse den AtCoder-Anfängerwettbewerb 160 mit Java
Löse den AtCoder-Anfängerwettbewerb 152 mit Java
Löse den AtCoder-Anfängerwettbewerb 156 mit Java
AtCoder Anfängerwettbewerb 167 C Problem (Java)
AtCoder Anfängerwettbewerb 169 A, B, C mit Rubin
AtCoder Anfängerwettbewerb 170 A, B, C bis Rubin
Lösen mit Ruby AtCoder ACL Anfängerwettbewerb C Union Find (DSU)
Ruby mit AtCoder 6 lernen [Contest 168 Daher]
[Anfänger] Lösen wir das AtCoder-Problem mit Ruby, während wir uns den Artikel ansehen!