[PYTHON] AtCoder Beginner Contest 175 Virtueller Eintrag

AtCoder Beginner Contest 175 Virtueller Eintrag

Ich bin auf den Berg gegangen und bin nicht zurückgekommen, also bin ich in den virtuellen Krieg eingetreten. Es ist das erste Mal, dass ich nicht in ABC erscheinen konnte, seit ich AtCoder gestartet habe? Wenn es herauskommt, war es eine Bewertung, tut mir leid

ABC175A - Rainy Season

Brechen Sie in 2 Minuten durch. Schreiben Sie einfach.

S = input()

t = 0
result = 0
for c in S:
    if c == 'R':
        t += 1
    else:
        t = 0
    result = max(result, t)
print(result)

ABC175B - Making Triangle

In 7 Minuten durchbrechen. Zuerst habe ich gegoogelt, weil ich den Zustand der Länge der Seite, auf der das Dreieck hergestellt werden kann, nicht kannte. Als nächstes "L i </ sub>, L j j / l k Ich habe "all different </ sub>" verpasst. Daher hat die Beantwortung der B-Frage lange gedauert.

from itertools import combinations

N, *L = map(int, open(0).read().split())

result = 0
for a, b, c in combinations(L, 3):
    if a == b or b == c or c == a:
        continue
    if a + b > c and b + c > a and c + a > b:
        result += 1
print(result)

ABC175C - Walking Takahashi

Es brach in 10 Minuten durch. Ich wusste sofort, weil ich in der Vergangenheit ähnliche Probleme gelöst hatte, dass ich mich einfach nähern und dann hin und her gehen würde, aber es dauerte viel Zeit, um hier und da Fehler zu machen.

X, K, D = map(int, input().split())

if X > D:
    t = min(X // D, K)
    K -= t
    X -= t * D
else:
    t = min(-X // D, K)
    K -= t
    X += t * D

K %= 2

if K == 0:
    print(abs(X))
else:
    if abs(X + D) < abs(X - D):
        print(abs(X + D))
    else:
        print(abs(X - D))

ABC175D - Moving Piece

Durchbruch in 52 Minuten. TLE × 1. Zuerst habe ich das "kleiner als oder gleich" von "K mal oder weniger" verpasst, den Code mit Verdoppelung geschrieben und mich gefragt, warum das Ausgabebeispiel 1 nicht 7 war. Ich bemerkte "das Folgende" und überlegte, ich dachte, dass O ( N </ i> 2 </ sup>) nicht passieren würde, und wenn eine Schleifenerkennung durchgeführt wird und die Summe in dieser Schleife positiv ist, ist die Anzahl der möglichen Schleifen × Ich habe es geschrieben und dachte, ich sollte die Summe in die Schleife einfügen, aber TLE. Es kann nicht geholfen werden, also habe ich es in Go-Sprache umgeschrieben und es ging schnell vorbei.

package main

import (
	"bufio"
	"fmt"
	"math"
	"os"
	"strconv"
)

func max(x, y int) int {
	if x > y {
		return x
	}
	return y
}
func main() {
	defer flush()

	N := readInt()
	K := readInt()

	P := make([]int, N)
	for i := 0; i < N; i++ {
		P[i] = readInt()
	}
	C := make([]int, N)
	for i := 0; i < N; i++ {
		C[i] = readInt()
	}

	result := math.MinInt64
	for i := 0; i < N; i++ {
		p := P[i] - 1
		c := C[p]
		k := K - 1
		t := c
		for p != i && k != 0 {
			p = P[p] - 1
			c += C[p]
			t = max(t, c)
			k--
		}
		if k == 0 || c <= 0 {
			result = max(result, t)
			continue
		}
		l := K - k
		c = c * (K/l - 1)
		k = K - (K/l-1)*l
		t = c
		for k != 0 {
			p = P[p] - 1
			c += C[p]
			t = max(t, c)
			k--
		}
		result = max(result, t)
	}
	println(result)
}

const (
	ioBufferSize = 1 * 1024 * 1024 // 1 MB
)

var stdinScanner = func() *bufio.Scanner {
	result := bufio.NewScanner(os.Stdin)
	result.Buffer(make([]byte, ioBufferSize), ioBufferSize)
	result.Split(bufio.ScanWords)
	return result
}()

func readString() string {
	stdinScanner.Scan()
	return stdinScanner.Text()
}

func readInt() int {
	result, err := strconv.Atoi(readString())
	if err != nil {
		panic(err)
	}
	return result
}

var stdoutWriter = bufio.NewWriter(os.Stdout)

func flush() {
	stdoutWriter.Flush()
}

func println(args ...interface{}) (int, error) {
	return fmt.Fprintln(stdoutWriter, args...)
}

Anstatt es in Go-Sprache umzuschreiben, musste ich es nur in PyPy veröffentlichen.

N, K = map(int, input().split())
P = list(map(int, input().split()))
C = list(map(int, input().split()))

result = -float('inf')
for i in range(N):
    p = P[i] - 1
    c = C[p]
    k = K - 1
    t = c
    while p != i and k != 0:
        p = P[p] - 1
        c += C[p]
        t = max(t, c)
        k -= 1
    if k == 0 or c <= 0:
        result = max(result, t)
        continue
    l = K - k
    c = c * (K // l - 1)
    k = K - (K // l - 1) * l
    t = c
    while k != 0:
        p = P[p] - 1
        c += C[p]
        t = max(t, c)
        k -= 1
    result = max(result, t)
print(result)

ABC175E - Picking Goods

Ich konnte nicht durchbrechen. Ich dachte, es wäre einfach mit DP ohne "Sie können jedoch nur bis zu 3 Gegenstände in derselben Zeile des Quadrats aufnehmen." Es gab einige Leute, die D übersprangen und E lösten. Wenn Sie also etwas wissen, gibt es keinen Unterschied in der Schwierigkeit?

Recommended Posts

AtCoder Beginner Contest 175 Virtueller Eintrag
AtCoder Anfängerwettbewerb 177
AtCoder Anfängerwettbewerb 179
AtCoder Anfängerwettbewerb 172
AtCoder Anfängerwettbewerb 180
AtCoder Anfängerwettbewerb 173
Atcoder Anfänger Wettbewerb 153
AtCoder Anfängerwettbewerb 152 Rückblick
AtCoder Anfängerwettbewerb 181 Hinweis
AtCoder Beginner Contest 160 Bewertung
AtCoder Anfängerwettbewerb 178 Bewertung
AtCoder Anfängerwettbewerb 180 Hinweis
AtCoder Anfängerwettbewerb 166 Bewertung
AtCoder Anfängerwettbewerb 167 Bewertung
AtCoder Anfängerwettbewerb 182 Hinweis
AtCoder Beginner Contest 164 Bewertung
AtCoder Beginner Contest 169 Bewertung
AtCoder Beginner Contest 181 Bewertung
AtCoder Beginner Contest 171 Bewertung
AtCoder Beginner Contest 182 Bewertung
AtCoder Beginner Contest 180 Bewertung
AtCoder Anfängerwettbewerb 156 WriteUp
AtCoder Anfängerwettbewerb 177 Rückblick
AtCoder Anfängerwettbewerb 168 Bewertung
AtCoder Beginner Contest 179 Bewertung
AtCoder Beginner Contest 167 Memorandum
AtCoder Beginner Contest 172 Bewertung
AtCoder Anfängerwettbewerb 183 Hinweis
AtCoder Anfängerwettbewerb 176 Bewertung
AtCoder Anfängerwettbewerb 184 Hinweis
AtCoder Anfängerwettbewerb 175 Bewertung
AtCoder Anfängerwettbewerb 174 Bewertung
AtCoder Beginner Contest 153 Bewertung
AtCoder Anfängerwettbewerb 156 Bewertung
AtCoder Beginner Contest 161 Bewertung
AtCoder Beginner Contest 170 Bewertung
AtCoder Beginner Contest 165 Bewertung
AtCoder Beginner Contest 173 Bewertung
AtCoder Anfängerwettbewerb 155 Bewertung
AtCoder Beginner Contest 162 Bewertung
AtCoder Beginner Contest 181 Teilnahmebericht
AtCoder Beginner Contest 161 Teilnahmebericht
AtCoder Beginner Contest 151 Teilnahmebericht
AtCoder Beginner Contest 176 Teilnahmebericht
AtCoder Beginner Contest 154 Teilnahmebericht
AtCoder Beginner Contest # 003 Teilnahmehinweis
AtCoder Beginner Contest 166 Teilnahmebericht
AtCoder Beginner Contest 153 Teilnahmebericht
AtCoder Beginner Contest # 002 C Problem
AtCoder Beginner Contest 145 Teilnahmebericht
AtCoder Beginner Contest 184 Teilnahmebericht
AtCoder Beginner Contest 165 Teilnahmebericht
AtCoder Beginner Contest 160 Teilnahmebericht
AtCoder Beginner Contest 169 Teilnahmebericht
AtCoder Beginner Contest 178 Teilnahmebericht
AtCoder Beginner Contest 163 Teilnahmebericht
AtCoder Beginner Contest 159 Teilnahmebericht
AtCoder Beginner Contest 164 Teilnahmebericht