競技プログラミング用 知識集積所

ABC430B - Count Subgrid

最終更新:

sport_programming

- view
管理者のみ編集可


問題


必要知識

A問題レベルのものは省略

考え方

問題の指示通り、塗り方を1つ1つ全探索※して、何種類あるか数えるだけ。
全探索※のために二重ループ※、さらに文字切り出しのためにもループが必要なので、全体で三重ループになるが、頑張って実装する。

塗り方を取り出すには、行数をカウンタとするforループで、一行ずつ該当範囲を.substr()で切り出すとよい。

種類数を数えるにはset※を使い、出現したものをひたすら.emplace()していく。
set※は重複を自動的に取り除いてくれるので、全探索※を終えた時点でのset※の要素数が答えとなる。
set※は、ソートの必要がない場合unorderedの方が動作が速いが、複雑な型を入れようとするとやや大変。B問題では高速化のメリットもないので、ここでは普通のset※でいい)

set※の型はset※<vector<string>>にして取り出した文字列を1行ずつ入れたvector<string>>で入れてもいいし、set※<string>で、取り出した文字列を一列につなげたstring型で入れてもいい。


解答例


注意点


別解

ウィキ募集バナー