結果
| 問題 |
No.2057 Ising Model
|
| コンテスト | |
| ユーザー |
ID 21712
|
| 提出日時 | 2025-05-12 00:58:48 |
| 言語 | Go (1.23.4) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 890 bytes |
| コンパイル時間 | 16,262 ms |
| コンパイル使用メモリ | 248,796 KB |
| 実行使用メモリ | 7,844 KB |
| 最終ジャッジ日時 | 2025-05-12 00:59:08 |
| 合計ジャッジ時間 | 16,556 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 41 WA * 3 |
ソースコード
package main
import . "fmt"
func main() {
var n,a,b int
Scan(&n,&a,&b)
ans:=solve(n,a,b)
Println(ans)
}
func solve(n, a, b int) int {
if n < 20 {
return bruteforce(n, a, b)
}
return min(a*(n-1)-b*n,-a*(n-1)-b*(n%2))
}
func init() {
check()
}
func check() {
for n := 10; n < 13; n++ {
for a := n-2; a <= n+2; a++ {
for b := n-2; b <= n+2; b++ {
ans1 := solve(n,a,b)
ans2 := bruteforce(n, a, b)
if ans1 != ans2 {
panic(Sprintf("n=%d,a=%d,b=%d,ans1=%d,ans2=%d",n,a,b,ans1,ans2))
}
}
}
}
}
func bruteforce(n, a, b int) int {
if n > 20 {
panic("N > 20")
}
ans := a*(n-1) - b * n
for i := 0; i < (1<<n); i++ {
tmp := 0
for j := 0; j < n-1; j++ {
s1 := 2*((i>>j)&1)-1
s2 := 2*((i>>(j+1))&1)-1
tmp += a * s1*s2
}
for j := 0; j < n; j++ {
s := 2*((i>>j)&1)-1
tmp -= b * s
}
ans = min(ans, tmp)
}
return ans
}
ID 21712