結果
| 問題 | No.1465 Archaea |
| コンテスト | |
| ユーザー |
ID 21712
|
| 提出日時 | 2026-05-25 02:51:30 |
| 言語 | Go (1.26.1) |
| 結果 |
AC
|
| 実行時間 | 2 ms / 2,000 ms |
| コード長 | 934 bytes |
| 記録 | |
| コンパイル時間 | 12,372 ms |
| コンパイル使用メモリ | 278,260 KB |
| 実行使用メモリ | 6,400 KB |
| 最終ジャッジ日時 | 2026-05-25 02:51:49 |
| 合計ジャッジ時間 | 15,305 ms |
|
ジャッジサーバーID (参考情報) |
judge3_1 / judge2_1 |
| 純コード判定待ち |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 20 |
ソースコード
package main
import . "fmt"
func main() {
var n,k int
Scan(&n,&k)
dp := make([]int, n+1)
for i := range dp {
dp[i] = 1e9
}
dp[1] = 0
for i := 1; i < n; i++ {
if i*2 < len(dp) {
dp[i*2] = min(dp[i*2], dp[i]+1)
}
if i+3 < len(dp) {
dp[i+3] = min(dp[i+3], dp[i]+1)
}
}
if dp[n] <= k {
Println("YES")
} else {
Println("NO")
}
}
/*
考察
K回ちょうど、とかだったら
N = 2^y + 3 * ( x[1] * 2^y + x[2] + 2^(y-1) + ... + x[y]*2^1 + x[y+1]*2^0 )
から
(N - 2^y) / 3 = x[1] * 2^y + x[2] + 2^(y-1) + ... + x[y]*2^1 + x[y+1]*2^0
N >= 2^y
(N - 2^y) ≡ 0 (mod 3)
K = y + x[1] + x[2] + ... + x[y] + x[y+1]
で
(N - 2^y) / 3 >= K - y
で
x[y+1] = K - y を割り当てたあと不足分をx[1]のほうから貪欲に埋めていくとかで、できそうな?
質問のとこで0回以上K回以下と書いてあるから
普通に1から操作繰り返す動的計画法で求めるぽそう
*/
ID 21712