けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

DP状態:ナップサック

AtCoder ARC 186 A - Underclued (4D, 橙色, 900 点)

久しぶりに高難易度問題を解いてみた! 問題へのリンク 問題概要 各マスの値が 0 または 1 である グリッドを考える。 グリッド のマス が「固定されている」とは、次の条件を満たすすべての グリッドについて、マス の値が一意に決まることをいう。 すべて…

鉄則本 A19 - Knapsack 1 (3Q, ★3)

ナップサック問題。鉄則本の問題なのでコードのみ。 問題へのリンク 問題概要 宝箱には 個の品物が入っている。品物 の重さは 、価値は である。 太郎君は、いくつかの品物を選んで持ち帰りたいと考えている。しかし、彼のナップザックには容量制限があるの…

鉄則本 A18 - Subset Sum (3Q, ★3)

部分和問題。鉄則本の問題なので、コードのみ。 問題へのリンク 問題概要 個の整数 からいくつか選んで、総和を にすることが可能かどうかを判定せよ。 制約 コード #include <bits/stdc++.h> using namespace std; int main() { int N, S; cin >> N >> S; vector<int> A(N); for</int></bits/stdc++.h>…

JOI 予選 2009 F - ビンゴ (AOJ 0537) (1D, 難易度 7)

一見すると計算量が厳しい問題にも見える。ちょっとした発想の転換が必要になる。 問題へのリンク 問題概要 正の整数 が与えられる。次の条件を満たす 個の整数 の組が何個あるかを 100000 で割った値を求めよ。 制約 [tex 1 \le N \le 7] 考えたこと 安直に…

AtCoder ABC 240 C - Jumping Takahashi (3Q, 茶色, 300 点)

部分和問題・ナップサック問題とほとんど同じ DP で解ける! 問題へのリンク 問題概要 数直線上で座標 0 から出発して、 回のジャンプをする。 回目のジャンプでは、正の方向に または の移動をする。 回のジャンプの末に座標 に到達することが可能かどうか…

AtCoder ABC 320 F - Fuel Round Trip (3D, 黄色, 550 点)

少し重たかった。でもいい問題。JOI にありそう。 問題へのリンク 問題概要 数直線上に 箇所の燃料補給所がある。 番目の補給所は次のようになっている。 座標 にある 補給すると、現在の HP が であるとき、HP が になる (コストとして を支払う) 今、高橋…

AtCoder ABC 265 F - Manhattan Cafe (黄色, 500 点)

次元空間という、いかめしいものが出てくるけど、あまり関係ない。DP 高速化が本質。 問題へのリンク 問題概要 次元空間上に 2 つの格子点 , が与えられる。 これらとのマンハッタン距離がともの 以下であるような格子点の個数を 998244353 で割ったあまりを…

AtCoder ABC 044 C - 高橋君とカード (ARC 060 C) (2Q, 水色, 300 点)

「平均値が A」という制約は上手に扱うテクニックがある。 今回はそれを思いつかなくても解けるけど、思いつくと計算量が落ちる。 問題へのリンク 問題概要 個の整数 からいくつか選ぶ方法のうち、その平均値がちょうど となるものが何通りあるかを求めよ。 …

AtCoder ABC 159 F - Knapsack for All Segments (青色, 600 点)

ごちゃごちゃとばぐらせながら何とか通した... 問題へのリンク 問題概要 要素の数列 が与えられる。この数列の 通りの区間それぞれについての 区間内の要素の部分集合であって総和が であるものの個数 の総和を求め、998244353 で割ったあまりを求めよ。 制…

AtCoder ABC 054 D - Mixing Experiment (2Q, 青色, 400 点)

なんだろ 問題へのリンク 問題概要 個の薬品があって、それぞれ成分 A, B を グラムずつ含んでいる (すべて整数値)。 これらのうちのいくつかを選んで混ぜ合わせることで、成分 A, B の比がちょうど : となるようにしたい。 そのようなことが可能となる薬品…