結果
問題 | No.1005 BOT対策 |
ユーザー |
![]() |
提出日時 | 2025-01-01 18:47:27 |
言語 | Go (1.23.4) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,019 bytes |
コンパイル時間 | 12,156 ms |
コンパイル使用メモリ | 238,388 KB |
実行使用メモリ | 7,772 KB |
最終ジャッジ日時 | 2025-01-01 18:47:41 |
合計ジャッジ時間 | 11,975 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 21 WA * 6 |
ソースコード
package mainimport . "fmt"import . "slices"func min(a, b int) int {if a < b {return a}return b}func main() {var s, t stringScan(&s, &t)bs := []byte(s)bt := []byte(t)if len(t) > len(s) {Println(0)return}if len(t) == 1 {if Contains(bs, bt[0]) {Println(-1)} else {Println(0)}return}const X = 1e9dp := make([][]int, len(bs)+1)for i := range dp {dp[i] = make([]int, len(bt)+1)for j := range dp[i] {dp[i][j] = X}}dp[0][0] = 0for i, sc := range bs {for _, v := range dp[i][1:] {if sc == bt[0] {dp[i][1] = min(dp[i][1], v+1)} else {dp[i][0] = min(dp[i][0], v+1)}}// Println(i,":",dp[i])cnt := 0for j, tc := range bt {if sc == tc {dp[i+1][j+1] = min(dp[i+1][j+1], dp[i][j])cnt++} else if cnt == 0 {dp[i+1][0] = min(dp[i+1][0], dp[i][j])}}// Println(i+1,":",dp[i+1])}ans := Min(dp[len(bs)][:len(bt)])if ans < X {Println(ans)} else {Println(-1)}}