質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

2回答

253閲覧

Atcorderの高橋くんの苦悩という問題 dpについて

JumpeiSuzuki

総合スコア11

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2019/06/28 08:14

高橋くんは、ソフトウエアが期待通りに動いたというエビデンス(証拠)として、
画面のスクリーンショットを表計算ソフトに貼り付ける作業を命じられました。
画面のスクリーンショットは N枚あり、
高さは全て等しいのですが、幅が異なります。
また、表計算ソフトに貼りつけ可能なスクリーンショットには
2つの制約が存在します。

表計算ソフトの幅は Wしかない。
そのため、貼りつけるスクリーンショットの幅の合計値は
W以下でなければならない。
表計算ソフトは
K枚より多くのスクリーンショットを貼りつけることが出来ない。
よって、表計算ソフトに貼りつけ可能なスクリーンショットは K枚までである。
さらに、スクリーンショットには「重要度」が存在するため、高橋くんは
2つの制約を満たしながら、貼り付けるスクリーンショットが持つ重要度の合計値を最大化したいです。 しかし、彼にとってこの仕事は難しいので、あなたが彼の代わりに表計算ソフトに貼り付け可能なスクリーンショットが持つ重要度の合計の最大値を求めてください。

という問題で、

C++

1#include <bits/stdc++.h> 2using namespace std; 3 4int main () { 5 int W,N,K; 6 cin>>W>>N>>K; 7 8 int a[N+1],b[N+1]; 9 for (int i=0;i<N;i++) { 10 cin>>a[i]>>b[i]; 11 } 12 int dp[N+1][W+1][K+1]={0}; 13 14 15 for (int i=0;i<N;i++) { 16 for (int j=0;j<=W;j++) { 17 for (int k=1;k<=K;k++) { 18 if (i==0) { 19 dp[i][j][k]=0; 20 } 21 else if (j<a[i]) { 22 dp[i+1][j][k]=max(dp[i][j][k],dp[i+1][j][k]); 23 } 24 else { 25 dp[i+1][j][k]=max(dp[i][j][k],dp[i][j-a[i]][k-1]+b[i]); 26 } 27 } 28 } 29 } 30 int c=-1; 31 for (int k=1;k<=K;k++) { 32 c=max(dp[N][W][k],c); 33 } 34 cout<<c<<endl; 35}

というコードを書きましたが、半分くらいのテストケースでACで、残りがWAとなりました。
どこが間違っているでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

episteme

2019/06/28 11:55 編集

a,b,dp の意味は? コメントのひとつもないの?
guest

回答2

0

人数
AtCoder Beginner/Regular/Grand Contest は個人で戦う必要があります。2人以上で結託し、解答する行為は禁止しております。

投稿2019/06/28 08:52

kasa0

総合スコア578

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

直接の答えではありません。

入力例1のデータ順を入れ替えた以下のようなデータを
貼ってもらったコードに食わせると、答えが120と出力されました。
現在のプログラムだと、1枚目のスクリーンショットは常に貼らない挙動になっていませんか?

text

110 23 2 33 40 44 20 56 100

投稿2019/06/28 13:44

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問