ああを検索した二次元バックパックGF(ロス・バレーP1509)を見つけるために検索しました

ああ、検索やGFを見つけるために検索しました

トピックの背景

「ああ、検索と良いGFを見つけ、GFを見つけるために検索、食事ああを引っ張って手、あなたは私の良いのGFです。さようなら。」

「あ、ああ...さよならはありません」

七夕...七夕...七夕のこの日、彼はこの曲という曲を聴いているが、彼はまだ非常に苦痛です。痛みを避けるために、「ああ、検索やGFを見つけるために検索」どのように痛いsqybiこの単一の新人のための... 、sqybiは何かの乾燥を見つけるために自分自身を与えることにした。彼は、彼女が自分でミッションに質問を与えてみましょうMM ZMC七夕シミュレートレースの担当者を見つけるために行ってきました。ストーカーの数日間は、ZMC MMは最終的に合意された後。

しかし、このタスクsqybiが-_-トピックは、さらに、単一よりも退屈することを発見し取得する...だから、彼は上記のと同時に、自分が愚かなものの別の作品を作ることができ、トピックを辿ることにしました - に自分のGFを見つけます。

sqybi今空想のn-MM、我々としてもnにそれらの数1を入れてあります。MMが食べるためにお金を使うことで、我々はMMの数iがMM。[i]は、海洋ブロック人民元を過ごすために食べるとGFとして自分自身にうそしたいしてくださいと仮定文字の電荷に、我々はsqybi、キャラクター[i]は、RPを過ごすために(バブルものかもしれないMMとして知られている)彼女自身GFの動作を取得しようとすると、MM、私、あなたの番が食べることを想定しています。とMMのそれぞれについて、 i番目のMMを取得するには、[i]はi番目のMMは、[i]は時間と呼ばれている。時間の経過とともに、彼らが十分な魅力を持っていることを確認sqybiのための彼女の時間を取得し、対応する時間を持っています_

彼のGFが、これは疑いを超えているときsqybiは多くのMMとして取得したい。しかし、彼は保証MMを取得したいので、彼は、(ないうちすべての七夕の季節のタイトルの後に)これ​​を行うには、あまりにも多くの時間を費やす必要はありません。最小合計時間は、例数が最も多いの下で過ごしました。

タイトル説明

sqybi今、海をブロックM、彼はまた、(これはああ~~ RP保存シミュレーションゲームにも問題である)、Rの文字までの期間の努力によって保存された。彼の性格及びこれらの海のおかげで、いくつかのMMを浸すことができます。彼私はある最小の時間を過ごすためにMMを浴びた、知りたいです。

一度に注意sqybi、MM-MMの2以上の場合、彼らは戦う間だけバブルにつかるします...

入力形式

入力の最初の行は、N MM sqybi空想の数です。

次いで、番号Nの行は、ある順番表す1、2、3、...、MMの行を表すN個の情報の各々のMM情報は、三つの整数:.元で、RPおよび時間があります。

最後の行は二つの整数、それぞれ、M及びRを有しています。

出力フォーマット

あなただけでMMの数を確保する上でsqybi過ごし少なくとも合計時間を表す整数を持つ出力の1行を、必要とします。


タイトルは、1次元のバックパックこの違いを言うために簡単で、少し長いです。

  1. 制限は、二つとなり、またオープン二次元アレイ、一次元のような他の思考対応循環DP。
  2. しかし、この問題は、数値を求めていないが、それはかかる最小時間、数を更新することができる場合、直接数が以前の状態に等しい時間、その後時間を比較することができる状態で結合されなければならないが、最小値をとります。

コード:

#include<bits/stdc++.h>
#define LL long long
#define pa pair<int,int>
#define lson k<<1
#define rson k<<1|1
using namespace std;
const int N=110;
const int M=200100;
const LL mod=2e9+7;
int rmb[N],rp[N],tim[N],m,r,n;
int dptim[N][N],dpsum[N][N];
int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++) scanf("%d%d%d",&rmb[i],&rp[i],&tim[i]);
	scanf("%d%d",&m,&r);
	for(int i=1;i<=n;i++){
		for(int j=m;j>=0;j--){//rmb 
			for(int k=r;k>=0;k--){//rp
				if(j>=rmb[i]&&k>=rp[i]){
					if(dpsum[j][k]<dpsum[j-rmb[i]][k-rp[i]]+1){
						dpsum[j][k]=dpsum[j-rmb[i]][k-rp[i]]+1;
						dptim[j][k]=dptim[j-rmb[i]][k-rp[i]]+tim[i];
					}
					if(dpsum[j][k]==dpsum[j-rmb[i]][k-rp[i]]+1){
						dptim[j][k]=min(dptim[j][k],dptim[j-rmb[i]][k-rp[i]]+tim[i]);
					}
				}
			}
		}
	}
	if(dpsum[m][r]) cout<<dptim[m][r]<<endl;
	else cout<<0<<endl;
	return 0;
}

公開された264元の記事 ウォン称賛46 ビュー10000 +

おすすめ

転載: blog.csdn.net/qq_44291254/article/details/105354714