怠惰の累積和

技術/競プロ/怪文書/虚無

ABC069D-Grid Coloring

・問題概要

出力すべきマス目の縦、横の数及び長さNの数列Aが与えられるので、A[i](0-indexed)の要素の数だけi+1の数を使い、尚且つその数同士は全て上下左右連結になるようにマス目を構成せよ。(圧倒的まとめるのの下手さ)

atcoder.jp

 

・解法

まず、同じ数字が上下左右連結でなければならない点に着目すると、

C - AND Gridのように一定の規則を持ってマス目を構成していけばよいと考える。すると、例えば入力例2であれば、入力された数字に対しvectorなりなんなりに{1,2,2,3,3,3,4,4,4,4,5,5,5,5,5}という数列を入れ、5番目から9番目までを反転させることによって{1,2,2,3,3,4,4,4,3,5,5,5,5,5}という数列ができ、これを愚直に出力すると条件を満たす列であることがわかる(ここにはスペースの都合上書きません)。その為、効率的に2つ目の数列を作るために1つ目の数列を行の偶奇によって逆から出力するのか前から出力するのかを場合分けして出力してあげてAC。

atcoder.jp