結果
| 問題 | No.3422 Sazanka's hobby |
| コンテスト | |
| ユーザー |
ID 21712
|
| 提出日時 | 2026-04-26 02:22:16 |
| 言語 | Go (1.26.1) |
| 結果 |
AC
|
| 実行時間 | 846 ms / 2,000 ms |
| コード長 | 1,118 bytes |
| 記録 | |
| コンパイル時間 | 11,696 ms |
| コンパイル使用メモリ | 276,088 KB |
| 実行使用メモリ | 34,304 KB |
| 最終ジャッジ日時 | 2026-04-26 02:22:42 |
| 合計ジャッジ時間 | 23,681 ms |
|
ジャッジサーバーID (参考情報) |
judge2_0 / judge1_1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 13 |
ソースコード
package main
import . "fmt"
import . "os"
import bf "bufio"
import . "sort"
func main() {
rd:=bf.NewReader(Stdin)
var n,m int
Fscan(rd,&n,&m)
a := make([]int, n)
b := make([]int, n)
for i:=0;i<n;i++{
Fscan(rd,&a[i],&b[i])
}
ans := solve1(n,m,a,b)
Println(ans)
}
func solve1(n, m int, a, b []int) (k int) {
t := map[int]int{}
for i := 0; i < n; i++ {
d := (m+1 - a[i] + b[i]-1)/b[i]
t[d]++
}
ds := make([]int, 0, len(t))
for d, _ := range t {
ds = append(ds, d)
}
Ints(ds)
k = 1
cnt := 0
for _, d := range ds {
cnt += t[d]
k = max(k, (cnt + d-1)/d)
}
return
}
/*
考察
『出来る限り長く植物を眺めていたい』が目的ならサンプル1はk=3が最適では?と感じた。
1日あたりの取り除く数を最小化したいニュアンスとして感じとれなかったので混乱した。
成長しきった植物は大きく重いから移動に体力を使うから最小化したい、ということかな。
解法予想は
M超える日で本数をまとめたものを本数の累積和を日数で割った値の最大値がkになるとか?
*/
ID 21712