基础二维dp 洛谷P1910 L国的战斗之间谍

    xiaoxiao2023-11-08  156

    P1910 L国的战斗之间谍 题目背景 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 一个基础的二维背包dp 之前博客有板子

    #include<bits/stdc++.h> using namespace std; int v, n, c; const int maxn = 2e3 + 5; int dp[maxn][maxn]; int v1[maxn], c1[maxn]; void bag01(int cost,int weight,int u) { int m,l; for(m = c; m >= cost; --m){ for(l = v; l >= weight; --l){ dp[m][l] = max(dp[m][l], dp[m - cost][l - weight] + u); } } } int main(){ cin >> n >> c >> v; for(int i = 1; i <= n; i++){ //cout << i << endl; int z; cin >> z; cin >> c1[i] >> v1[i]; bag01(c1[i],v1[i],z); } cout << dp[c][v] << endl; }
    最新回复(0)