Il a éclaté en 8 minutes et demie. J'ai essayé de le résoudre rapidement par la méthode de production divisionnaire comme indiqué. J'étais inquiet du nombre de sections à diviser, mais si je le faisais correctement avec 4096, ce serait une bonne précision avec le premier tir. Je suis sorti, alors je l'ai soumis et c'était sûr AC.
a, b = map(int, input().split())
x = a
result = 0
t = 1 / 4096
while x < b:
result += abs((x - a) * (x - b) * t)
x += t
print(result)
Percer en 41 minutes. J'ai écrit un code à traiter avec des entiers et je me demandais pourquoi je n'ai pas AC. C'est trop stupide. Pliez le court verticalement et horizontalement jusqu'à la limite, puis pliez le long jusqu'à la limite. ..
x, y, h = map(int, input().split())
if x < y:
x, y = y, x
x *= 1000
y *= 1000
result = 0
while y > h:
y /= 2
h *= 2
result += 1
while x > h:
x /= 2
h *= 2
result += 1
print(result)
Il peut également être traité comme un entier, à condition que les nombres changent relativement correctement.
x, y, h = map(int, input().split())
if x < y:
x, y = y, x
x *= 1000
y *= 1000
result = 0
while y > h:
x *= 2
h *= 4
result += 1
while x > h:
y *= 2
h *= 4
result += 1
print(result)
Perdu. Si vous DP docilement, ce sera * O * (* N * 2 </ sup> d), donc TLE. Si vous réfléchissez bien, vous atteindrez la i-ème étape, id .. i-1ère étape, i + La première étape est la même sauf pour i --d + 1 .. i et les deux extrémités. Si tel est le cas, * O * (1) peut être utilisé à la place de * O * (* d ). Il est devenu * O * ( N * 2 </ sup>) et a été résolu.
package main
import (
"bufio"
"fmt"
"os"
"strconv"
)
func main() {
N := readInt()
d := readInt()
K := readInt()
buf0 := make([]int, d*N+K+1)
buf1 := make([]int, d*N+K+1)
buf0[0] = 1
for i := 0; i < N; i++ {
t := 0
for j := 0; j < d; j++ {
t += buf0[j]
t %= 1000000007
buf1[j] = t
}
for j := d; j < (i+1)*d; j++ {
t -= buf0[j-d]
if t < 0 {
t += 1000000007
}
t += buf0[j]
t %= 1000000007
buf1[j] = t
}
buf0, buf1 = buf1, buf0
}
fmt.Println(buf0[K-N])
}
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
}
#AC pour PyPy
N, d, K = map(int, input().split())
buf0 = [0] * (d * N + K + 1)
buf1 = [0] * (d * N + K + 1)
buf0[0] = 1
for i in range(N):
t = 0
for j in range(d):
t += buf0[j]
t %= 1000000007
buf1[j] = t
for j in range(d, (i + 1) * d):
t -= buf0[j - d]
t += buf0[j]
t %= 1000000007
buf1[j] = t
buf0, buf1 = buf1, buf0
print(buf0[K - N])
Recommended Posts