ds.sum/2
(相当)を ds.sum-ds.max
に変えるだけでいけると思ったけど駄目だった>提出 #31435269 (WA×20 / AC ×14)。■今日の提出 #31585826 (AC / 1068 Byte / 1671 ms)。答えをね、見ました。「Hは与えられた点を連結にする辺だけ残した部分木を考えて、それの辺数の2倍から直径を引く」。引くのは目についたテキトーな数字(ds.max
)ではなく直径だと。言われれば、うーん、まあ、うーん、そうかもね、という感じ(わかっていない)。木の直径についてはこのとき(20211004p01.02)に一応のイメージを持っていたが、自分では見つけられない。A = 1,1,1,1
のとき答えが食い違う。えっテストケースざるでは? Yes であるための必要条件ではあるけど十分条件ではないのだな。A.max*B.min
と A.zip(B).map{|a,b| a*b }
に限定していいのかわからない。この一連のツイートが Day2 の B 問題についてのものだろうか。「@kotatsugame_t これならひっかかってませんか? https://t.co/CFIYrhdR68」「~のときは、区間は短いほど得なので、長さ1の区間のみで十分です。」 ああなるほどって思えないからこれが関連ツイートなのかどうかわからないんだよね。
x.zip(y,z).map(&:sum).max(M).sum
でいい。