結果
| 問題 | No.3300 Frog Game |
| コンテスト | |
| ユーザー |
ID 21712
|
| 提出日時 | 2026-01-18 19:11:20 |
| 言語 | Go (1.25.5) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 2,809 bytes |
| 記録 | |
| コンパイル時間 | 12,595 ms |
| コンパイル使用メモリ | 241,368 KB |
| 実行使用メモリ | 7,852 KB |
| 最終ジャッジ日時 | 2026-01-18 19:11:35 |
| 合計ジャッジ時間 | 14,032 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 20 WA * 15 |
ソースコード
package main
import . "fmt"
var dump = false
func init() {
// check()
dump = true
// check2()
// check3()
dump = false
}
func main() {
var n, a, b int
Scan(&n,&a,&b)
defer func() {
if recover() != nil {
if solve(n, a, b) {
Println("sepa")
} else {
Println("ryota")
}
}
}()
if dpsol(n, a, b) {
Println("sepa")
} else {
Println("ryota")
}
}
func solve(n, a, b int) bool {
n--
if a >= n {
return false
}
if a+a >= n {
return true
}
if b >= n {
return (n / a) % 2 == 0
}
if a+b >= n {
return true
}
aa := (n + a - 1) / a
bb := n / b
if n % b == 0 {
bb += (b + a - 1) / a - 1
} else {
bb += (n % b + a - 1) / a
}
if aa % 2 == bb % 2 {
return aa % 2 == 0
}
ab := n / (a + b) + (n % (a + b) + a - 1) / a
return ab % 2 == aa % 2
}
func dpsol(n, a, b int) bool {
if 1+a >= n {
return false
}
dp := make([]int, n+a+1)
for i := 0; i < a; i++ {
dp[n-a+i] = 1
}
for i := n; i > 1; i-- {
if dp[i] == 0 {
continue
}
if i-a > 0 {
dp[i-a] = max(dp[i-a], 3-dp[i])
}
if i-b > 0 {
dp[i-b] = max(dp[i-b], 3-dp[i])
}
}
if dump {
println(Sprintf("n=%d,a=%d,b=%d,ans=%v", n,a,b,dp[1]==2))
println(tostr(dp))
}
return dp[1] == 2
}
func tostr(dp []int) string {
bs := make([]byte, len(dp))
for i, v := range dp {
bs[i] = byte(v+'0')
}
return string(bs)
}
func check() {
ac, wa := 0, 0
for n,m := 1, 2; n < 1e5; n,m = m,n+m {
for a := 1; a <= 30 && a+1 < n; a++ {
for b := a+1; b < n && b < a*30; b += a+1 {
result := dpsol(n, a, b)
answer := solve(n, a, b)
if result == answer {
ac++
} else {
wa++
if wa == 1 {
println(Sprintf("n=%d,a=%d,b=%d",n,a,b))
println(Sprintf("result=%v", result))
println(Sprintf("answer=%v", answer))
}
}
}
}
}
println(Sprintf("AC=%d,WA=%d",ac, wa))
}
func check2() {
ns := []int{103}
ac, wa := 0, 0
for _, n := range ns {
for a := 1; a < 12; a++ {
for b := a+a; b < 10*a; b += a+a {
result := dpsol(n, a, b)
answer := solve(n, a, b)
if result == answer {
ac++
} else {
wa++
if wa == 1 {
println(Sprintf("n=%d,a=%d,b=%d",n,a,b))
println(Sprintf("result=%v", result))
println(Sprintf("answer=%v", answer))
}
}
}
}
}
println(Sprintf("AC=%d,WA=%d",ac, wa))
}
func check3() {
ns := []int{103}
ac, wa := 0, 0
for _, n := range ns {
for a := 1; a < 12; a++ {
for b := a+a+a; b < 10*a; b += a+a {
result := dpsol(n, a, b)
answer := solve(n, a, b)
if result == answer {
ac++
} else {
wa++
if wa == 1 {
println(Sprintf("n=%d,a=%d,b=%d",n,a,b))
println(Sprintf("result=%v", result))
println(Sprintf("answer=%v", answer))
}
}
}
}
}
println(Sprintf("AC=%d,WA=%d",ac, wa))
}
ID 21712