AGC041A - Table Tennis Training
Es brach in 28,5 Minuten durch. WA5. Ich fand es einfach und reichte es ein, aber es war nicht einfach.
Das früheste der folgenden ist die Antwort
N, A, B = map(int, input().split())
t = float('inf')
if abs(A - B) % 2 == 0:
t = min(abs(A - B) // 2, t)
t = min(B - 1, t)
t = min(N - A, t)
t = min((A - 1 + 1) + (B - A - 1) // 2, t)
t = min((N - B + 1) + (N - (A + (N - B + 1))) // 2, t)
print(t)
PS: Wenn Sie noch einmal darüber nachdenken, brauchen Sie nicht 2 und 3, und wenn es gerade ist, müssen Sie nicht über das Muster nachdenken, das an den Rand geht.
N, A, B = map(int, input().split())
if (B - A) % 2 == 0:
print((B - A) // 2)
else:
print(min(A, N - B + 1) + (B - A - 1) // 2)
Brechen Sie in 113 Minuten durch. WA5. Essen Sie TLE mit Python, essen Sie TLE mit PyPy, essen Sie TLE, auch wenn es mit Go umgeschrieben wurde, löschen Sie eine nutzlose Kopie von Slice, AC, nur einen schweren Testfall Es kam herein und war durcheinander.
Der Tanz der Freude wurde jedoch von dem Zustand der Tränen wiedergeboren, der in den 1900er Jahren bis in die prächtigen 900er Jahre als voller Bocco eingestuft wurde.
Da M die maximale Anzahl von Stimmen ist, die ein Problem erhalten können, ist es im Grunde ein Kandidat, wenn die aktuelle Punktzahl + M gleich oder höher als die P-te Punktzahl ist. Wenn es jedoch zu viele Stimmen gab, musste ich für die P-te Punktzahl stimmen, was sehr schwierig war. Um ehrlich zu sein, habe ich es richtig geschrieben, aber ich habe es oft durchgesehen. Genau genommen scheint es irgendwo ein Loch zu geben ...
package main
import (
"bufio"
"fmt"
"os"
"sort"
"strconv"
)
func min(x, y int) int {
if x < y {
return x
}
return y
}
func main() {
N := readInt()
M := readInt()
V := readInt()
P := readInt()
A := make([]int, N)
for i := 0; i < N; i++ {
A[i] = readInt()
}
sort.Sort(sort.Reverse(sort.IntSlice(A)))
p := A[P-1]
V -= P - 1
b := A[P-1:]
for {
mv := M * V
for i := 0; i < len(b); i++ {
t := min(p-b[i], M)
mv -= t
}
if mv > 0 {
p += (mv + len(b) - 1) / len(b)
} else {
break
}
}
result := 0
for i := 0; i < N; i++ {
if A[i]+M >= p {
result++
}
}
fmt.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
}
Recommended Posts