競技プログラミング問題の解法と実装

A - 二つのオーブンを使用した最小調理時間 N個の料理を連続して調理するのに必要な時間がT_i分与えられます。二つのオーブンを使用する場合の全料理の最短調理時間を求めます。 解法 動的計画法を用いて、一方のオーブンで実現可能な調理時間の組み合わせを求め、最小の最大調理時間を探索します。 #include <vector> #include <algorithm> #include <iost ...

8月4日 20:00 投稿

ビット列列挙の応用問題集

ビット列列挙は、組み合わせ問題を効率的に解決するための強力な手法です。具体的な応用例を通じてその実装方法を解説します。 問題1: ビットマスクとPopcountの総和 与えられた非負整数NとMについて、0からNまでの全ての整数iにおける (i & M) のビットカウント(popcount)の総和を求める。解法では加算処理を乗算に変換して効率化する。 例: N=22 (2進数:10110) ...

7月11日 21:10 投稿

牛客プログラミングコンテスト89 解法解説

A. 牛牛吃米粒 入力: 整数 n, k と符号なし整数 s、および k 個の位置 a_i。各ビット位置が制限されていないか検証し、s のビットが立っている位置が禁止領域と重なる場合は "NO"、それ以外は "YES" を出力。 #include <iostream> #include <vector> using namespace std; int main() { unsigned long long s; int n, k; cin >> n >> k; vect ...

6月5日 22:18 投稿