結果
問題 | No.5007 Steiner Space Travel |
ユーザー |
![]() |
提出日時 | 2025-01-29 02:50:13 |
言語 | Go (1.23.4) |
結果 |
AC
|
実行時間 | 4 ms / 1,000 ms |
コード長 | 1,288 bytes |
コンパイル時間 | 13,042 ms |
コンパイル使用メモリ | 244,772 KB |
実行使用メモリ | 6,820 KB |
スコア | 2,668,438 |
最終ジャッジ日時 | 2025-01-29 02:50:30 |
合計ジャッジ時間 | 14,925 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
純コード判定しない問題か言語 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 30 |
ソースコード
package main import . "fmt" const ALPHA = 5 func dist(a,b []int, i int, c,d []int, j int) int { dx := a[i] - c[j] dy := b[i] - d[j] return dx*dx + dy*dy } func main() { var n, m int Scan(&n, &m) a := make([]int, n) b := make([]int, n) for i := range a { Scan(&a[i],&b[i]) } c := make([]int, m) d := make([]int, m) for i := range c { c[i] = (i%3+1)*250 d[i] = (i/3+1)*250 } t := []int{1} r := []int{1} for i := 0; i < n; i++ { next := (i+1)%n best := ALPHA*ALPHA*dist(a,b,i,a,b,next) st1 := -1 st2 := -1 for j := 0; j < m; j++ { tmp := ALPHA*dist(a,b,i,c,d,j) + ALPHA*dist(c,d,j,a,b,next) if tmp < best { best = tmp st1 = j st2 = -1 } } for j := 0; j < m; j++ { for k := 0; k < m; k++ { if j == k { continue } tmp := ALPHA*dist(a,b,i,c,d,j) + dist(c,d,j,c,d,k) + ALPHA*dist(c,d,k,a,b,i) if tmp < best { best = tmp st1 = j st2 = k } } } if st1 < 0 { t = append(t, 1) r = append(r, next+1) } else if st2 < 0 { t = append(t, 2, 1) r = append(r, st1+1, next+1) } else { t = append(t, 2, 2, 1) r = append(r, st1+1, st2+1, next+1) } } for i := range c { Println(c[i], d[i]) } Println(len(t)) for i := range t { Println(t[i], r[i]) } }