Brechen Sie in 1 Minute durch. Schreiben Sie einfach.
r = int(input())
print(r * r)
Brechen Sie in dreieinhalb Minuten durch. Stellen Sie einfach sicher, dass Sie eine gleichmäßige Länge haben.
from sys import exit
N = int(input())
S = input()
if N % 2 == 1:
print('No')
exit()
if S[:N // 2] == S[N // 2:]:
print('Yes')
else:
print('No')
Es brach in 8 Minuten durch. Ich dachte, ich sollte die Gesamtdistanz aller Kombinationen mitteln, und als ich es schrieb, bestand das Eingabebeispiel. Als ich es einreichte, kam AC heraus, aber als ich die Erklärung las, passierte es nur durch einen Zufall. ..
from math import sqrt
N = int(input())
xy = [list(map(int, input().split())) for _ in range(N)]
result = 0
for i in range(N):
for j in range(N):
if i != j:
result += sqrt((xy[i][0] - xy[j][0]) * (xy[i][0] - xy[j][0]) + (xy[i][1] - xy[j][1]) * (xy[i][1] - xy[j][1]))
print(result / N)
Durchbruch in 85 Minuten. RE4 WA1, aber kaum eineinhalb Minuten vor dem Ende des Wechselstroms. Der Speicher läuft über, wenn zum ersten Mal versucht wird, DP zu verwenden. Die Berechnungszeit läuft über, wenn das Array auf zirkuläre Verwendung umgestellt wird. In diesem Modus wird die Richtlinie als schlecht eingestuft. X, Y. Wenn Sie sich die DP-Tabelle ansehen, wenn sie klein ist, werden Sie feststellen, dass es zu wenige Quadrate mit Werten gibt und es nur ein Muster für jede der beiden Bewegungen gibt, wenn Sie zu X, Y gelangen. Lösen der simultanen Gleichungen, `a = (2 · Y - X) / 3, b = (2 · X - Y) / 3 ', und die zu erhaltende Lösung ist a + b </ sub> C
package main
import (
"bufio"
"fmt"
"os"
"strconv"
)
const (
M = 1000000007
)
var (
fac []int
ifac []int
)
func min(x, y int) int {
if x < y {
return x
}
return y
}
func mpow(x int, n int) int {
ans := 1
for n != 0 {
if n&1 == 1 {
ans = ans * x % M
}
x = x * x % M
n = n >> 1
}
return ans
}
func comb(a int, b int) int {
if a == 0 && b == 0 {
return 1
}
if a < b || a < 0 {
return 0
}
tmp := ifac[a-b] * ifac[b] % M
return tmp * fac[a] % M
}
func main() {
X := readInt()
Y := readInt()
if (X+Y)%3 != 0 {
fmt.Println(0)
return
}
fac = make([]int, 666667)
ifac = make([]int, 666667)
a := (2*Y - X) / 3
b := (2*X - Y) / 3
if a < 0 || b < 0 {
fmt.Println(0)
return
}
fac[0] = 1
ifac[0] = 1
for i := 0; i < 666666; i++ {
fac[i+1] = fac[i] * (i + 1) % M
ifac[i+1] = ifac[i] * mpow(i+1, M-2) % M
}
fmt.Println(comb(a+b, min(a, b)) % M)
}
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
}
Nachtrag: In Python umgeschrieben.
p = 1000000007
X, Y = map(int, input().split())
if (X + Y) % 3 != 0:
print(0)
exit()
a = (2 * Y - X) // 3
b = (2 * X - Y) // 3
if a < 0 or b < 0:
print(0)
exit()
n = a + b
fac = [0] * (n + 1)
fac[0] = 1
for i in range(n):
fac[i + 1] = fac[i] * (i + 1) % p
def mcomb(n, k):
if n == 0 and k == 0:
return 1
if n < k or k < 0:
return 0
return fac[n] * pow(fac[n - k], p - 2, p) * pow(fac[k], p - 2, p) % p
print(mcomb(n, a))
Ich kann nicht einmal anfangen. Es ist ein Rucksack, aber es ist möglich, nur einen Schuss herauszuhalten. Die Kombination, die den Regeln entspricht, bleibt gemäß den Regeln, auch wenn diejenige, die am längsten dauert, durch die letzte ersetzt wird, aber das Gegenteil ist nicht immer der Fall. Das ist nicht der Fall, also ist es besser, die Zeit zu verschieben, die zum Essen benötigt wird, damit Sie mehr essen können. Daher können Sie sortieren und DP in der Reihenfolge der Zeit, die zum Essen benötigt wird. Ich persönlich denke, es ist einfacher als das D-Problem.
def main():
N, T = map(int, input().split())
AB = [list(map(int, input().split())) for _ in range(N)]
dp = [-1] * (T + 3000)
dp[0] = 0
for a, b in sorted(AB):
for i in range(T - 1, -1, -1):
if dp[i] == -1:
continue
if dp[i + a] < dp[i] + b:
dp[i + a] = dp[i] + b
print(max(dp))
main()
Recommended Posts