[AtCoder] ABC080 C – Shopping Street
問題
方針
ビット全探索
ある曜日のどの時間帯に店を営業するかどうかで利益が変わり、\( 5 \) つの曜日と午前・午後を考えれば良いので、\( 2^{10} \) 通りのビット全探索を行えば良いことが分かります。
店の営業情報は \( F_{i, j, k} \) と3つの添え字が使われていますが、便宜上 \( F_{i, j}\) として二次元配列で表すことにします。つまり、 \( j \) は \( 0 \leq j \leq 9 \) の範囲で、曜日と時間帯の両方を表すことになります。
あとは、全ての通りについて利益を計算して最大値を求めます。注意すべきなのは、必ず一つ以上の時間帯で店が営業するという点です。
コード
提出したコード
利益の計算
int profit = 0; // cnt: 両方が営業している時間帯の個数 for (int i = 0; i < N; i++) { int cnt = 0; for (int j = 0; j < 10; j++) { if(F[i][j] == 1 && bit[j] == 1) cnt++; } profit += P[i][cnt]; }
ディスカッション
コメント一覧
まだ、コメントがありません