AC日记——L国の戦闘のスパイ洛谷P 1916

4083 ワード

テーマの背景
L国はI国と戦争を始める!
タイトルの説明
よく言われるように、「自分を知って彼を知っていれば、百戦危うからず」.L国の指揮官はスパイをI国に派遣しようとしたので、候補者の仕事はあなたに落ちた.
あなたは今N人の人選があって、すべての人はすべてこのようないくつかのデータがあります:A(どれだけの資料を得ることができます)、B(偽装能力がどれだけ悪いか)、C(どれだけの給料を要します).敌のスパイを探る能力がM(すぐ行くすべての人のBの和はMに等しい)と手元にX元があることを知っていて、どれだけの资料を手に入れることができますか?
にゅうしゅつりょくけいしき
入力形式:
 
N M X
A1 B1 C1
A2 B2 C2
………………
AN BN CN
 
出力フォーマット:
 
得られる資料の総数
 
入出力サンプル
サンプル#1を入力:
3 10 12
10 1 11
1 9 1
7 10 12

出力サンプル#1:
11

説明
データ範囲:
1≤n≤100,1≤m≤1000, 1≤x≤1000
 
考え方:
2 Dリュックサック
 
さあ、コードをつけます.
#include 
#include 

using namespace std;

int if_z,n,m,x,ci,vi,vi_,dp[1005][1005];

char Cget;

inline void in(int &now)
{
    now=0,if_z=1,Cget=getchar();
    while(Cget>'9'||Cget<'0')
    {
        if(Cget=='-') if_z=-1;
        Cget=getchar();
    }
    while(Cget>='0'&&Cget<='9')
    {
        now=now*10+Cget-'0';
        Cget=getchar();
    }
    now*=if_z;
}

int main()
{
    in(n),in(m),in(x);
    for(int i=1;i<=n;i++)
    {
        in(ci),in(vi),in(vi_);
        for(int j=m;j>=vi;j--)
        {
            for(int v=x;v>=vi_;v--) dp[j][v]=max(dp[j][v],dp[j-vi][v-vi_]+ci);
        }
    }
    cout<<dp[m][x];
    return 0;
}

 
転載先:https://www.cnblogs.com/IUUUUUUUskyyy/p/6492645.html