【ACM】dp专场训练

A.摘花生

题目描述

Hello Kitty想摘点花生送给她喜欢的米老鼠。

她来到一片有网格状道路的矩形花生地(如下图),从西北角进去,东南角出来。

地里每个道路的交叉点上都有种着一株花生苗,上面有若干颗花生,经过一株花生苗就能摘走该它上面所有的花生。

Hello Kitty只能向东或向南走,不能向西或向北走。

问Hello Kitty最多能够摘到多少颗花生。

【ACM】dp专场训练

输入格式

第一行是一个整数T,代表一共有多少组数据。

接下来是T组数据。

每组数据的第一行是两个整数,分别代表花生苗的行数R和列数 C。

每组数据的接下来R行数据,从北向南依次描述每行花生苗的情况。每行数据有C个整数,按从西向东的顺序描述了该行每株花生苗上的花生数目M。

输出格式

对每组输入数据,输出一行,内容为Hello Kitty能摘到得最多的花生颗数。

数据范围

1 ≤ T ≤ 100,
1 ≤ R,C ≤ 100,
0 ≤ M ≤ 1000

输入样例:

2
2 2
1 1
3 4
2 3
2 3 4
1 6 5

输出样例:

8
16

思路

状态表示:在第i行第j列最多摘到的花生数为f[i][j]
状态计算: f[i][j] = f[i][j] + max(f[i-1][j] , f[i][j-1])

【ACM】dp专场训练

C++ 代码

#include <bits stdc++.h>
#pragma GCC optimize(2)//O(2)&#x4F18;&#x5316;

using namespace std;

typedef pair<int,int>PII;
typedef unsigned long long ull;
typedef long long ll;

const int INF = 0x3f3f3f3f;
const int mod = 1e9+7;
int dx[] = {0,1,0,-1};
int dy[] = {-1,0,1,0};

const int N = 110;

int f[N][N];

void solve()
{
    int r , c;
    cin >> r >> c;

    for(int i = 1;i <= r;i ++) { for(int j="1;j" <="c;j" int x; cin>> x;
            f[i][j] = x;
        }
    }

    for(int i = 1;i <= r;i ++) { for(int j="1;j" <="c;j" f[i][j] +="max(f[i-1][j]," f[i][j-1]); } cout << "ans=";
    cout << f[r][c] << endl;
}

int main()
{
    /*&#x8BFB;&#x5165;&#x4F18;&#x5316;*/
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    int T;
    cin >> T;

    while(T --)
        solve();

    return 0;
}

</code></pre><h2 id=" b合唱队形">B.&#x5408;&#x5531;&#x961F;&#x5F62;<h3 id="&#x9898;&#x76EE;&#x63CF;&#x8FF0;-1">&#x9898;&#x76EE;&#x63CF;&#x8FF0;</h3><p><code>N</code> &#x4F4D;&#x540C;&#x5B66;&#x7AD9;&#x6210;&#x4E00;&#x6392;&#xFF0C;&#x97F3;&#x4E50;&#x8001;&#x5E08;&#x8981;&#x8BF7;&#x5176;&#x4E2D;&#x7684; <code>(N-K)</code> &#x4F4D;&#x540C;&#x5B66;&#x51FA;&#x5217;&#xFF0C;&#x4F7F;&#x5F97;&#x5269;&#x4E0B;&#x7684; <code>K</code> &#x4F4D;&#x540C;&#x5B66;&#x6392;&#x6210;&#x5408;&#x5531;&#x961F;&#x5F62;&#x3002;</p><p>&#x5408;&#x5531;&#x961F;&#x5F62;&#x662F;&#x6307;&#x8FD9;&#x6837;&#x7684;&#x4E00;&#x79CD;&#x961F;&#x5F62;&#xFF1A;&#x8BBE; <code>K</code> &#x4F4D;&#x540C;&#x5B66;&#x4ECE;&#x5DE6;&#x5230;&#x53F3;&#x4F9D;&#x6B21;&#x7F16;&#x53F7;&#x4E3A; <code>1&#xFF0C;2&#x2026;&#xFF0C;K</code>&#xFF0C;&#x4ED6;&#x4EEC;&#x7684;&#x8EAB;&#x9AD8;&#x5206;&#x522B;&#x4E3A; <code>T\_1&#xFF0C;T\_2&#xFF0C;&#x2026;&#xFF0C;T\_K</code>&#xFF0C; &#x5219;&#x4ED6;&#x4EEC;&#x7684;&#x8EAB;&#x9AD8;&#x6EE1;&#x8DB3; <code>T\_1 < &#x2026; < T\_i > T\_{i+1} > &#x2026; > T\_K(1 &#x2264; i &#x2264; K)</code>&#x3002;</p><p>&#x4F60;&#x7684;&#x4EFB;&#x52A1;&#x662F;&#xFF0C;&#x5DF2;&#x77E5;&#x6240;&#x6709; <code>N</code> &#x4F4D;&#x540C;&#x5B66;&#x7684;&#x8EAB;&#x9AD8;&#xFF0C;&#x8BA1;&#x7B97;&#x6700;&#x5C11;&#x9700;&#x8981;&#x51E0;&#x4F4D;&#x540C;&#x5B66;&#x51FA;&#x5217;&#xFF0C;&#x53EF;&#x4EE5;&#x4F7F;&#x5F97;&#x5269;&#x4E0B;&#x7684;&#x540C;&#x5B66;&#x6392;&#x6210;&#x5408;&#x5531;&#x961F;&#x5F62;&#x3002;</p><h4 id="&#x8F93;&#x5165;&#x683C;&#x5F0F;-1">&#x8F93;&#x5165;&#x683C;&#x5F0F;</h4><p>&#x8F93;&#x5165;&#x7684;&#x7B2C;&#x4E00;&#x884C;&#x662F;&#x4E00;&#x4E2A;&#x6574;&#x6570; <code>N</code>&#xFF0C;&#x8868;&#x793A;&#x540C;&#x5B66;&#x7684;&#x603B;&#x6570;&#x3002;</p><p>&#x7B2C;&#x4E8C;&#x884C;&#x6709; <code>N</code> &#x4E2A;&#x6574;&#x6570;&#xFF0C;&#x7528;&#x7A7A;&#x683C;&#x5206;&#x9694;&#xFF0C;&#x7B2C; <code>i</code> &#x4E2A;&#x6574;&#x6570; <code>T\_i</code> &#x662F;&#x7B2C; <code>i</code> &#x4F4D;&#x540C;&#x5B66;&#x7684;&#x8EAB;&#x9AD8;(&#x5398;&#x7C73;)&#x3002;</p><h4 id="&#x8F93;&#x51FA;&#x683C;&#x5F0F;-1">&#x8F93;&#x51FA;&#x683C;&#x5F0F;</h4><p>&#x8F93;&#x51FA;&#x5305;&#x62EC;&#x4E00;&#x884C;&#xFF0C;&#x8FD9;&#x4E00;&#x884C;&#x53EA;&#x5305;&#x542B;&#x4E00;&#x4E2A;&#x6574;&#x6570;&#xFF0C;&#x5C31;&#x662F;&#x6700;&#x5C11;&#x9700;&#x8981;&#x51E0;&#x4F4D;&#x540C;&#x5B66;&#x51FA;&#x5217;&#x3002;</p><h4 id="&#x6570;&#x636E;&#x8303;&#x56F4;-1">&#x6570;&#x636E;&#x8303;&#x56F4;</h4><p><code>2 &#x2264; N &#x2264; 100</code>,<br><code>130 &#x2264; T[i] &#x2264; 230</code></p><h4 id="&#x8F93;&#x5165;&#x6837;&#x4F8B;-1">&#x8F93;&#x5165;&#x6837;&#x4F8B;&#xFF1A;</h4><pre><code>8
186 186 150 200 160 130 197 220
</code></pre><h4 id="&#x8F93;&#x51FA;&#x6837;&#x4F8B;-1">&#x8F93;&#x51FA;&#x6837;&#x4F8B;&#xFF1A;</h4><pre><code>4
</code></pre><h3 id="&#x601D;&#x8DEF;-1">&#x601D;&#x8DEF;</h3><p><img src="https://img2022.cnblogs.com/blog/2731572/202208/2731572-20220809194314979-1586690309.png"><br><a href="https://www.acwing.com/solution/content/3805/" title="&#x3010;&#x8F6C;AcWing&#x3011;yxc" rel="noopener">&#x3010;&#x8F6C;AcWing&#x3011;yxc</a></p><h4 id="c-&#x4EE3;&#x7801;-1">C++ &#x4EE3;&#x7801;</h4><pre><code>#include <bits stdc++.h>

using namespace std;

typedef pair<int,int>PII;
typedef unsigned long long ull;
typedef long long ll;

const int INF = 0x3f3f3f3f;
const int mod = 1e9+7;
int dx[] = {0,1,0,-1};
int dy[] = {-1,0,1,0};

const int N = 110;

int n ;
int f[N] , g[N];
int h[N];

void solve()
{
    cin >> n;

    for(int i = 1;i <= n;i ++) cin>> h[i];

    for(int i = 1;i <= n;i ++) { f[i]="1;" for(int j="1;j" < i;j if(h[j] h[i]) , f[j] + 1); } i="n;i"> 0 ;i --)
    {
        g[i] = 1;
        for(int j = n;j > i;j --)
        {
            if(h[j] < h[i])
                g[i] = max(g[i] , g[j] + 1);
        }
    }

    int res = 0;
    for(int i = 1;i <= n;i ++) res="max(res,f[i]+g[i]-1);" cout << n-res endl; } int main() { *读入优化* ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); t; t="1;" cin>> T;

    while(T --)
        solve();

    return 0;
}

</=></=></=></int,int></bits></code></pre><h2 id="c&#x91C7;&#x836F;">C.&#x91C7;&#x836F;</h2><h3 id="&#x9898;&#x76EE;&#x63CF;&#x8FF0;-2">&#x9898;&#x76EE;&#x63CF;&#x8FF0;</h3><p>&#x8FB0;&#x8FB0;&#x662F;&#x4E2A;&#x5929;&#x8D44;&#x806A;&#x9896;&#x7684;&#x5B69;&#x5B50;&#xFF0C;&#x4ED6;&#x7684;&#x68A6;&#x60F3;&#x662F;&#x6210;&#x4E3A;&#x4E16;&#x754C;&#x4E0A;&#x6700;&#x4F1F;&#x5927;&#x7684;&#x533B;&#x5E08;&#x3002;</p><p>&#x4E3A;&#x6B64;&#xFF0C;&#x4ED6;&#x60F3;&#x62DC;&#x9644;&#x8FD1;&#x6700;&#x6709;&#x5A01;&#x671B;&#x7684;&#x533B;&#x5E08;&#x4E3A;&#x5E08;&#x3002;</p><p>&#x533B;&#x5E08;&#x4E3A;&#x4E86;&#x5224;&#x65AD;&#x4ED6;&#x7684;&#x8D44;&#x8D28;&#xFF0C;&#x7ED9;&#x4ED6;&#x51FA;&#x4E86;&#x4E00;&#x4E2A;&#x96BE;&#x9898;&#x3002;</p><p>&#x533B;&#x5E08;&#x628A;&#x4ED6;&#x5E26;&#x5230;&#x4E00;&#x4E2A;&#x5230;&#x5904;&#x90FD;&#x662F;&#x8349;&#x836F;&#x7684;&#x5C71;&#x6D1E;&#x91CC;&#x5BF9;&#x4ED6;&#x8BF4;&#xFF1A;&#x201C;&#x5B69;&#x5B50;&#xFF0C;&#x8FD9;&#x4E2A;&#x5C71;&#x6D1E;&#x91CC;&#x6709;&#x4E00;&#x4E9B;&#x4E0D;&#x540C;&#x7684;&#x8349;&#x836F;&#xFF0C;&#x91C7;&#x6BCF;&#x4E00;&#x682A;&#x90FD;&#x9700;&#x8981;&#x4E00;&#x4E9B;&#x65F6;&#x95F4;&#xFF0C;&#x6BCF;&#x4E00;&#x682A;&#x4E5F;&#x6709;&#x5B83;&#x81EA;&#x8EAB;&#x7684;&#x4EF7;&#x503C;&#x3002;&#x6211;&#x4F1A;&#x7ED9;&#x4F60;&#x4E00;&#x6BB5;&#x65F6;&#x95F4;&#xFF0C;&#x5728;&#x8FD9;&#x6BB5;&#x65F6;&#x95F4;&#x91CC;&#xFF0C;&#x4F60;&#x53EF;&#x4EE5;&#x91C7;&#x5230;&#x4E00;&#x4E9B;&#x8349;&#x836F;&#x3002;&#x5982;&#x679C;&#x4F60;&#x662F;&#x4E00;&#x4E2A;&#x806A;&#x660E;&#x7684;&#x5B69;&#x5B50;&#xFF0C;&#x4F60;&#x5E94;&#x8BE5;&#x53EF;&#x4EE5;&#x8BA9;&#x91C7;&#x5230;&#x7684;&#x8349;&#x836F;&#x7684;&#x603B;&#x4EF7;&#x503C;&#x6700;&#x5927;&#x3002;&#x201D;</p><p>&#x5982;&#x679C;&#x4F60;&#x662F;&#x8FB0;&#x8FB0;&#xFF0C;&#x4F60;&#x80FD;&#x5B8C;&#x6210;&#x8FD9;&#x4E2A;&#x4EFB;&#x52A1;&#x5417;&#xFF1F;</p><h4 id="&#x8F93;&#x5165;&#x683C;&#x5F0F;-2">&#x8F93;&#x5165;&#x683C;&#x5F0F;</h4><p>&#x8F93;&#x5165;&#x6587;&#x4EF6;&#x7684;&#x7B2C;&#x4E00;&#x884C;&#x6709;&#x4E24;&#x4E2A;&#x6574;&#x6570; <code>T</code> &#x548C; <code>M</code>&#xFF0C;&#x7528;&#x4E00;&#x4E2A;&#x7A7A;&#x683C;&#x9694;&#x5F00;&#xFF0C;<code>T</code> &#x4EE3;&#x8868;&#x603B;&#x5171;&#x80FD;&#x591F;&#x7528;&#x6765;&#x91C7;&#x836F;&#x7684;&#x65F6;&#x95F4;&#xFF0C;<code>M</code> &#x4EE3;&#x8868;&#x5C71;&#x6D1E;&#x91CC;&#x7684;&#x8349;&#x836F;&#x7684;&#x6570;&#x76EE;&#x3002;</p><p>&#x63A5;&#x4E0B;&#x6765;&#x7684; <code>M</code> &#x884C;&#x6BCF;&#x884C;&#x5305;&#x62EC;&#x4E24;&#x4E2A;&#x5728; <code>1</code> &#x5230; <code>100</code> &#x4E4B;&#x95F4;&#xFF08;&#x5305;&#x62EC; <code>1</code> &#x548C; <code>100</code>&#xFF09;&#x7684;&#x6574;&#x6570;&#xFF0C;&#x5206;&#x522B;&#x8868;&#x793A;&#x91C7;&#x6458;&#x67D0;&#x682A;&#x8349;&#x836F;&#x7684;&#x65F6;&#x95F4;&#x548C;&#x8FD9;&#x682A;&#x8349;&#x836F;&#x7684;&#x4EF7;&#x503C;&#x3002;</p><h4 id="&#x8F93;&#x51FA;&#x683C;&#x5F0F;-2">&#x8F93;&#x51FA;&#x683C;&#x5F0F;</h4><p>&#x8F93;&#x51FA;&#x6587;&#x4EF6;&#x5305;&#x62EC;&#x4E00;&#x884C;&#xFF0C;&#x8FD9;&#x4E00;&#x884C;&#x53EA;&#x5305;&#x542B;&#x4E00;&#x4E2A;&#x6574;&#x6570;&#xFF0C;&#x8868;&#x793A;&#x5728;&#x89C4;&#x5B9A;&#x7684;&#x65F6;&#x95F4;&#x5185;&#xFF0C;&#x53EF;&#x4EE5;&#x91C7;&#x5230;&#x7684;&#x8349;&#x836F;&#x7684;&#x6700;&#x5927;&#x603B;&#x4EF7;&#x503C;&#x3002;</p><h4 id="&#x6570;&#x636E;&#x8303;&#x56F4;-2">&#x6570;&#x636E;&#x8303;&#x56F4;</h4><p><code>1 &#x2264; T &#x2264; 1000</code>,<br><code>1 &#x2264; M &#x2264; 100</code></p><h4 id="&#x8F93;&#x5165;&#x6837;&#x4F8B;-2">&#x8F93;&#x5165;&#x6837;&#x4F8B;&#xFF1A;</h4><pre><code>70 3
71 100
69 1
1 2
</code></pre><h4 id="&#x8F93;&#x51FA;&#x6837;&#x4F8B;-2">&#x8F93;&#x51FA;&#x6837;&#x4F8B;&#xFF1A;</h4><pre><code>3
</code></pre><h3 id="&#x601D;&#x8DEF;-2">&#x601D;&#x8DEF;</h3><p>&#x4E0E;01&#x80CC;&#x5305;&#x95EE;&#x9898;&#x4E00;&#x6837;&#xFF0C;<br>&#x533A;&#x522B;&#xFF1A;&#x65F6;&#x95F4; --> &#x80CC;&#x5305;&#x5BB9;&#x91CF;<br><strong>&#x72B6;&#x6001;&#x8868;&#x793A;&#xFF1A;&#x6240;&#x6709;&#x53EA;&#x4ECE;&#x524D;i&#x4E2A;&#x7269;&#x54C1;&#x4E2D;&#x9009;&#xFF0C;&#x4E14;&#x603B;&#x65F6;&#x95F4;&#x4E0D;&#x8D85;&#x8FC7;j&#x7684;&#x9009;&#x6CD5;</strong><br><strong>&#x72B6;&#x6001;&#x8BA1;&#x7B97;&#xFF1A;<code>f[i][j] = max(f[i][j] , f[i-1][j-v[i]]+w[i])</code></strong><br><img src="https://img2022.cnblogs.com/blog/2731572/202208/2731572-20220809175739705-808859243.png"></p><h4 id="c-&#x4EE3;&#x7801;-2">C++ &#x4EE3;&#x7801;</h4><pre><code>#include <bits stdc++.h>

using namespace std;

typedef pair<int,int>PII;
typedef unsigned long long ull;
typedef long long ll;

const int INF = 0x3f3f3f3f;
const int mod = 1e9+7;
int dx[] = {0,1,0,-1};
int dy[] = {-1,0,1,0};

const int N = 1010;

int n , m;
int t[N] , v[N];
int f[N][N];

void solve()
{
    cin >> m >> n;

    for(int i = 1;i <= n;i ++) cin>> t[i] >> v[i];

    for(int i = 1;i <= n;i ++) { for(int j="0;j" <="m;j" f[i][j]="f[i-1][j];" if(j>= t[i])
                f[i][j] = max(f[i][j] , f[i-1][j-t[i]]+v[i]);
        }
    }

    cout << f[n][m] << endl;

}

int main()
{
    /*&#x8BFB;&#x5165;&#x4F18;&#x5316;*/
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    int T;
    T = 1;
    //cin >> T;

    while(T --)
        solve();

    return 0;
}

</=></=></int,int></bits></code></pre><h2 id="d&#x5F00;&#x5FC3;&#x7684;&#x91D1;&#x660E;">D.&#x5F00;&#x5FC3;&#x7684;&#x91D1;&#x660E;</h2><h3 id="&#x9898;&#x76EE;&#x63CF;&#x8FF0;-3">&#x9898;&#x76EE;&#x63CF;&#x8FF0;</h3><p>&#x91D1;&#x660E;&#x4ECA;&#x5929;&#x5F88;&#x5F00;&#x5FC3;&#xFF0C;&#x5BB6;&#x91CC;&#x8D2D;&#x7F6E;&#x7684;&#x65B0;&#x623F;&#x5C31;&#x8981;&#x9886;&#x94A5;&#x5319;&#x4E86;&#xFF0C;&#x65B0;&#x623F;&#x91CC;&#x6709;&#x4E00;&#x95F4;&#x4ED6;&#x81EA;&#x5DF1;&#x4E13;&#x7528;&#x7684;&#x5F88;&#x5BBD;&#x655E;&#x7684;&#x623F;&#x95F4;&#x3002;</p><p>&#x66F4;&#x8BA9;&#x4ED6;&#x9AD8;&#x5174;&#x7684;&#x662F;&#xFF0C;&#x5988;&#x5988;&#x6628;&#x5929;&#x5BF9;&#x4ED6;&#x8BF4;&#xFF1A;&#x201C;&#x4F60;&#x7684;&#x623F;&#x95F4;&#x9700;&#x8981;&#x8D2D;&#x4E70;&#x54EA;&#x4E9B;&#x7269;&#x54C1;&#xFF0C;&#x600E;&#x4E48;&#x5E03;&#x7F6E;&#xFF0C;&#x4F60;&#x8BF4;&#x4E86;&#x7B97;&#xFF0C;&#x53EA;&#x8981;&#x4E0D;&#x8D85;&#x8FC7; <code>N</code> &#x5143;&#x94B1;&#x5C31;&#x884C;&#x201D;&#x3002;</p><p>&#x4ECA;&#x5929;&#x4E00;&#x65E9;&#x91D1;&#x660E;&#x5C31;&#x5F00;&#x59CB;&#x505A;&#x9884;&#x7B97;&#xFF0C;&#x4F46;&#x662F;&#x4ED6;&#x60F3;&#x4E70;&#x7684;&#x4E1C;&#x897F;&#x592A;&#x591A;&#x4E86;&#xFF0C;&#x80AF;&#x5B9A;&#x4F1A;&#x8D85;&#x8FC7;&#x5988;&#x5988;&#x9650;&#x5B9A;&#x7684; <code>N</code> &#x5143;&#x3002;</p><p>&#x4E8E;&#x662F;&#xFF0C;&#x4ED6;&#x628A;&#x6BCF;&#x4EF6;&#x7269;&#x54C1;&#x89C4;&#x5B9A;&#x4E86;&#x4E00;&#x4E2A;&#x91CD;&#x8981;&#x5EA6;&#xFF0C;&#x5206;&#x4E3A; <code>5</code> &#x7B49;&#xFF1A;&#x7528;&#x6574;&#x6570; <code>1 \\sim 5</code> &#x8868;&#x793A;&#xFF0C;&#x7B2C; <code>5</code> &#x7B49;&#x6700;&#x91CD;&#x8981;&#x3002;</p><p>&#x4ED6;&#x8FD8;&#x4ECE;&#x56E0;&#x7279;&#x7F51;&#x4E0A;&#x67E5;&#x5230;&#x4E86;&#x6BCF;&#x4EF6;&#x7269;&#x54C1;&#x7684;&#x4EF7;&#x683C;&#xFF08;&#x90FD;&#x662F;&#x6574;&#x6570;&#x5143;&#xFF09;&#x3002;</p><p>&#x4ED6;&#x5E0C;&#x671B;&#x5728;&#x4E0D;&#x8D85;&#x8FC7; <code>N</code> &#x5143;&#xFF08;&#x53EF;&#x4EE5;&#x7B49;&#x4E8E; <code>N</code> &#x5143;&#xFF09;&#x7684;&#x524D;&#x63D0;&#x4E0B;&#xFF0C;&#x4F7F;&#x6BCF;&#x4EF6;&#x7269;&#x54C1;&#x7684;&#x4EF7;&#x683C;&#x4E0E;&#x91CD;&#x8981;&#x5EA6;&#x7684;&#x4E58;&#x79EF;&#x7684;&#x603B;&#x548C;&#x6700;&#x5927;&#x3002;</p><p>&#x8BBE;&#x7B2C; <code>j</code> &#x4EF6;&#x7269;&#x54C1;&#x7684;&#x4EF7;&#x683C;&#x4E3A; <code>v\[j\]</code>&#xFF0C;&#x91CD;&#x8981;&#x5EA6;&#x4E3A; <code>w\[j\]</code>&#xFF0C;&#x5171;&#x9009;&#x4E2D;&#x4E86; <code>k</code> &#x4EF6;&#x7269;&#x54C1;&#xFF0C;&#x7F16;&#x53F7;&#x4F9D;&#x6B21;&#x4E3A; <code>j\_1&#xFF0C;j\_2&#xFF0C;&#x2026;&#xFF0C;j\_k</code>&#xFF0C;&#x5219;&#x6240;&#x6C42;&#x7684;&#x603B;&#x548C;&#x4E3A;&#xFF1A;</p><p><code>v\[j\_1\] \\times w\[j\_1\]+v\[j\_2\] \\times w\[j\_2\]+&#x2026;+v\[j\_k\] \\times w\[j\_k\]</code></p><p>&#x8BF7;&#x4F60;&#x5E2E;&#x52A9;&#x91D1;&#x660E;&#x8BBE;&#x8BA1;&#x4E00;&#x4E2A;&#x6EE1;&#x8DB3;&#x8981;&#x6C42;&#x7684;&#x8D2D;&#x7269;&#x5355;&#x3002;</p><h4 id="&#x8F93;&#x5165;&#x683C;&#x5F0F;-3">&#x8F93;&#x5165;&#x683C;&#x5F0F;</h4><p>&#x8F93;&#x5165;&#x6587;&#x4EF6;&#x7684;&#x7B2C; <code>1</code> &#x884C;&#xFF0C;&#x4E3A;&#x4E24;&#x4E2A;&#x6B63;&#x6574;&#x6570; <code>N</code> &#x548C; <code>m</code>&#xFF0C;&#x7528;&#x4E00;&#x4E2A;&#x7A7A;&#x683C;&#x9694;&#x5F00;&#x3002;&#xFF08;&#x5176;&#x4E2D; <code>N</code> &#x8868;&#x793A;&#x603B;&#x94B1;&#x6570;&#xFF0C;<code>m</code> &#x4E3A;&#x5E0C;&#x671B;&#x8D2D;&#x4E70;&#x7269;&#x54C1;&#x7684;&#x4E2A;&#x6570;&#xFF09;</p><p>&#x4ECE;&#x7B2C; <code>2</code> &#x884C;&#x5230;&#x7B2C; <code>m+1</code> &#x884C;&#xFF0C;&#x7B2C; <code>j</code> &#x884C;&#x7ED9;&#x51FA;&#x4E86;&#x7F16;&#x53F7;&#x4E3A; <code>j-1</code> &#x7684;&#x7269;&#x54C1;&#x7684;&#x57FA;&#x672C;&#x6570;&#x636E;&#xFF0C;&#x6BCF;&#x884C;&#x6709; <code>2</code> &#x4E2A;&#x975E;&#x8D1F;&#x6574;&#x6570; <code>v</code> &#x548C; <code>p</code>&#x3002;&#xFF08;&#x5176;&#x4E2D; <code>v</code> &#x8868;&#x793A;&#x8BE5;&#x7269;&#x54C1;&#x7684;&#x4EF7;&#x683C;&#xFF0C;<code>p</code> &#x8868;&#x793A;&#x8BE5;&#x7269;&#x54C1;&#x7684;&#x91CD;&#x8981;&#x5EA6;&#xFF09;</p><h4 id="&#x8F93;&#x51FA;&#x683C;&#x5F0F;-3">&#x8F93;&#x51FA;&#x683C;&#x5F0F;</h4><p>&#x8F93;&#x51FA;&#x6587;&#x4EF6;&#x53EA;&#x6709;&#x4E00;&#x4E2A;&#x6B63;&#x6574;&#x6570;&#xFF0C;&#x4E3A;&#x4E0D;&#x8D85;&#x8FC7;&#x603B;&#x94B1;&#x6570;&#x7684;&#x7269;&#x54C1;&#x7684;&#x4EF7;&#x683C;&#x4E0E;&#x91CD;&#x8981;&#x5EA6;&#x4E58;&#x79EF;&#x7684;&#x603B;&#x548C;&#x7684;&#x6700;&#x5927;&#x503C;&#xFF08;&#x6570;&#x636E;&#x4FDD;&#x8BC1;&#x7ED3;&#x679C;&#x4E0D;&#x8D85;&#x8FC7; <code>10^8</code>&#xFF09;&#x3002;</p><h4 id="&#x6570;&#x636E;&#x8303;&#x56F4;-3">&#x6570;&#x636E;&#x8303;&#x56F4;</h4><p><code>1 &#x2264; N < 30000</code>,<br><code>1 &#x2264; m < 25</code>,<br><code>0 &#x2264; v &#x2264; 10000</code>,<br><code>1 &#x2264; p &#x2264; 5</code></p><h4 id="&#x8F93;&#x5165;&#x6837;&#x4F8B;-3">&#x8F93;&#x5165;&#x6837;&#x4F8B;&#xFF1A;</h4><pre><code>1000 5
800 2
400 5
300 5
400 3
200 2
</code></pre><h4 id="&#x8F93;&#x51FA;&#x6837;&#x4F8B;-3">&#x8F93;&#x51FA;&#x6837;&#x4F8B;&#xFF1A;</h4><pre><code>3900
</code></pre><h3 id="&#x601D;&#x8DEF;-3">&#x601D;&#x8DEF;</h3><p>&#x7C7B;&#x4F3C;&#x4E8E;01&#x80CC;&#x5305;&#x95EE;&#x9898;<br><strong>&#x72B6;&#x6001;&#x8868;&#x793A;&#xFF1A;&#x4ECE;1&#x5230;i&#x4E2D;&#x9009;&#xFF0C;&#x4E14;&#x603B;&#x4F53;&#x79EF;&#x4E0D;&#x8D85;&#x8FC7;j&#x7684;&#x6240;&#x6709;&#x9009;&#x6CD5;&#x7684;&#x96C6;&#x5408;</strong><br><strong>&#x72B6;&#x6001;&#x8BA1;&#x7B97;&#xFF1A;<code>f[i][j] = max(f[i][j] , f[i][j-v[i]]+w[i])</code></strong><br><img src="https://img2022.cnblogs.com/blog/2731572/202208/2731572-20220810172056720-1126700758.png"></p><h4 id="c-&#x4EE3;&#x7801;-3">C++ &#x4EE3;&#x7801;</h4><pre><code>#include <bits stdc++.h>

using namespace std;

typedef pair<int,int>PII;
typedef unsigned long long ull;
typedef long long ll;

const int INF = 0x3f3f3f3f;
const int mod = 1e9+7;
int dx[] = {0,1,0,-1};
int dy[] = {-1,0,1,0};

const int N = 35;
const int M = 30010;
int n , m;
int f[N][M];

void solve()
{
    cin >> m >> n;

    for(int i = 1;i <= n;i ++) { int v , w; cin>> v >> w;
        w = v * w;

        for(int j = 0;j <= m;j ++) { f[i][j]="f[i" - 1][j]; if(j>= v)
                f[i][j] = max(f[i][j] , f[i-1][j-v]+w);
        }
    }

    cout << f[n][m] << endl;

}

int main()
{
    /*&#x8BFB;&#x5165;&#x4F18;&#x5316;*/
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    int T;
    //cin >> T;
    T = 1;

    while(T --)
        solve();

    return 0;
}

</=></=></int,int></bits></code></pre><h2 id="e&#x7A7A;&#x5FC3;&#x83F1;&#x5F62;">E.&#x7A7A;&#x5FC3;&#x83F1;&#x5F62;</h2><h3 id="&#x9898;&#x76EE;&#x85D0;&#x89C6;">&#x9898;&#x76EE;&#x85D0;&#x89C6;</h3><p>&#x8F93;&#x5165;&#x4E00;&#x4E2A;&#x6574;&#x6570; n&#xFF0C;&#x8F93;&#x51FA;&#x4E00;&#x4E2A;&#x7A7A;&#x5FC3;&#x83F1;&#x5F62;&#xFF0C;&#x5176;&#x4E2D;&#x6BCF;&#x4E2A;&#x8FB9;&#x7531; n &#x4E2A;'*'&#x7EC4;&#x6210;&#x3002;</p><h4 id="&#x8F93;&#x5165;&#x683C;&#x5F0F;-4">&#x8F93;&#x5165;&#x683C;&#x5F0F;</h4><p>&#x8F93;&#x5165;&#x5305;&#x542B;&#x4E00;&#x4E2A;&#x6574;&#x6570; n&#x3002;</p><h4 id="&#x8F93;&#x51FA;&#x683C;&#x5F0F;-4">&#x8F93;&#x51FA;&#x683C;&#x5F0F;</h4><p>&#x8F93;&#x51FA;&#x4E00;&#x4E2A;&#x7A7A;&#x5FC3;&#x83F1;&#x5F62;&#xFF0C;&#x6BCF;&#x4E2A;&#x8FB9;&#x7531; n &#x4E2A;'*'&#x7EC4;&#x6210; &#x3002;</p><h4 id="&#x6570;&#x636E;&#x8303;&#x56F4;-4">&#x6570;&#x636E;&#x8303;&#x56F4;</h4><p><code>1&#x2264;n&#x2264;20</code>&#x3002;</p><h4 id="&#x601D;&#x8DEF;-4">&#x601D;&#x8DEF;</h4><p>&#x6A21;&#x62DF;&#xFF08;&#x4E0D;&#x77E5;&#x9053;dp&#x601D;&#x8DEF;&#xFF09;</p><h4 id="&#x4EE3;&#x7801;">&#x4EE3;&#x7801;</h4><pre><code>#include <bits stdc++.h>

using namespace std;

typedef pair<int,int>PII;
typedef unsigned long long ull;
typedef long long ll;

const int INF = 0x3f3f3f3f;
const int mod = 1e9+7;
int dx[] = {0,1,0,-1};
int dy[] = {-1,0,1,0};

int n;

void solve()
{
    cin >> n;

    //&#x4E0A;&#x534A;&#x90E8;&#x5206;
    for(int i = 1;i <= n;i ++) { int k="n" - i; while(k --) printf(" "); if(i="=" 1) printf("*"); else * i 3; } printf("\n"); 下半部分 for(int 1;i>= 1;i --)
    {
        int k = n - i;
        while(k --)
            printf(" ");

        if(i == 1)
            printf("*");
        else
        {
            printf("*");

            int k = 2 * i - 3;
            while(k --)
                printf(" ");

            printf("*");
        }
        printf("\n");
    }
}

int main()
{
    /*&#x8BFB;&#x5165;&#x4F18;&#x5316;*/
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    int T;
    //cin >> T;
    T = 1;

    while(T --)
        solve();

    return 0;
}
</=></int,int></bits></code></pre><h2 id="f&#x5927;&#x76D7;&#x963F;&#x798F;">F.&#x5927;&#x76D7;&#x963F;&#x798F;</h2><h3 id="&#x9898;&#x76EE;&#x63CF;&#x8FF0;-4">&#x9898;&#x76EE;&#x63CF;&#x8FF0;</h3><p>&#x963F;&#x798F;&#x662F;&#x4E00;&#x540D;&#x7ECF;&#x9A8C;&#x4E30;&#x5BCC;&#x7684;&#x5927;&#x76D7;&#x3002;&#x8D81;&#x7740;&#x6708;&#x9ED1;&#x98CE;&#x9AD8;&#xFF0C;&#x963F;&#x798F;&#x6253;&#x7B97;&#x4ECA;&#x665A;&#x6D17;&#x52AB;&#x4E00;&#x6761;&#x8857;&#x4E0A;&#x7684;&#x5E97;&#x94FA;&#x3002;</p><p>&#x8FD9;&#x6761;&#x8857;&#x4E0A;&#x4E00;&#x5171;&#x6709; N &#x5BB6;&#x5E97;&#x94FA;&#xFF0C;&#x6BCF;&#x5BB6;&#x5E97;&#x4E2D;&#x90FD;&#x6709;&#x4E00;&#x4E9B;&#x73B0;&#x91D1;&#x3002;&#x963F;&#x798F;&#x4E8B;&#x5148;&#x8C03;&#x67E5;&#x5F97;&#x77E5;&#xFF0C;&#x53EA;&#x6709;&#x5F53;&#x4ED6;&#x540C;&#x65F6;&#x6D17;&#x52AB;&#x4E86;&#x4E24;&#x5BB6;&#x76F8;&#x90BB;&#x7684;&#x5E97;&#x94FA;&#x65F6;&#xFF0C;&#x8857;&#x4E0A;&#x7684;&#x62A5;&#x8B66;&#x7CFB;&#x7EDF;&#x624D;&#x4F1A;&#x542F;&#x52A8;&#xFF0C;&#x7136;&#x540E;&#x8B66;&#x5BDF;&#x5C31;&#x4F1A;&#x8702;&#x62E5;&#x800C;&#x81F3;&#x3002;</p><p>&#x4F5C;&#x4E3A;&#x4E00;&#x5411;&#x8C28;&#x614E;&#x4F5C;&#x6848;&#x7684;&#x5927;&#x76D7;&#xFF0C;&#x963F;&#x798F;&#x4E0D;&#x613F;&#x610F;&#x5192;&#x7740;&#x88AB;&#x8B66;&#x5BDF;&#x8FFD;&#x6355;&#x7684;&#x98CE;&#x9669;&#x884C;&#x7A83;&#x3002;&#x4ED6;&#x60F3;&#x77E5;&#x9053;&#xFF0C;&#x5728;&#x4E0D;&#x60CA;&#x52A8;&#x8B66;&#x5BDF;&#x7684;&#x60C5;&#x51B5;&#x4E0B;&#xFF0C;&#x4ED6;&#x4ECA;&#x665A;&#x6700;&#x591A;&#x53EF;&#x4EE5;&#x5F97;&#x5230;&#x591A;&#x5C11;&#x73B0;&#x91D1;&#xFF1F;</p><h4 id="&#x8F93;&#x5165;&#x683C;&#x5F0F;-5">&#x8F93;&#x5165;&#x683C;&#x5F0F;</h4><p>&#x8F93;&#x5165;&#x7684;&#x7B2C;&#x4E00;&#x884C;&#x662F;&#x4E00;&#x4E2A;&#x6574;&#x6570; T (T&#x2264;50) &#xFF0C;&#x8868;&#x793A;&#x4E00;&#x5171;&#x6709; T &#x7EC4;&#x6570;&#x636E;&#x3002;</p><p>&#x63A5;&#x4E0B;&#x6765;&#x7684;&#x6BCF;&#x7EC4;&#x6570;&#x636E;&#xFF0C;&#x7B2C;&#x4E00;&#x884C;&#x662F;&#x4E00;&#x4E2A;&#x6574;&#x6570; N(1&#x2264;N&#x2264;100,000)&#xFF0C;&#x8868;&#x793A;&#x4E00;&#x5171;&#x6709; N &#x5BB6;&#x5E97;&#x94FA;&#x3002;</p><p>&#x7B2C;&#x4E8C;&#x884C;&#x662F; N &#x4E2A;&#x88AB;&#x7A7A;&#x683C;&#x5206;&#x5F00;&#x7684;&#x6B63;&#x6574;&#x6570;&#xFF0C;&#x8868;&#x793A;&#x6BCF;&#x4E00;&#x5BB6;&#x5E97;&#x94FA;&#x4E2D;&#x7684;&#x73B0;&#x91D1;&#x6570;&#x91CF;&#x3002;&#x6BCF;&#x5BB6;&#x5E97;&#x94FA;&#x4E2D;&#x7684;&#x73B0;&#x91D1;&#x6570;&#x91CF;&#x5747;&#x4E0D;&#x8D85;&#x8FC7; 1000&#x3002;</p><h4 id="&#x8F93;&#x51FA;&#x683C;&#x5F0F;-5">&#x8F93;&#x51FA;&#x683C;&#x5F0F;</h4><p>&#x5BF9;&#x4E8E;&#x6BCF;&#x7EC4;&#x6570;&#x636E;&#xFF0C;&#x8F93;&#x51FA;&#x4E00;&#x884C;&#x3002;</p><p>&#x8BE5;&#x884C;&#x5305;&#x542B;&#x4E00;&#x4E2A;&#x6574;&#x6570;&#xFF0C;&#x8868;&#x793A;&#x963F;&#x798F;&#x5728;&#x4E0D;&#x60CA;&#x52A8;&#x8B66;&#x5BDF;&#x7684;&#x60C5;&#x51B5;&#x4E0B;&#x53EF;&#x4EE5;&#x5F97;&#x5230;&#x7684;&#x73B0;&#x91D1;&#x6570;&#x91CF;&#x3002;</p><h4 id="&#x63D0;&#x793A;">&#x63D0;&#x793A;</h4><p>&#x5BF9;&#x4E8E;&#x7B2C;&#x4E00;&#x7EC4;&#x6837;&#x4F8B;&#xFF0C;&#x963F;&#x798F;&#x9009;&#x62E9;&#x7B2C; 2 &#x5BB6;&#x5E97;&#x94FA;&#x884C;&#x7A83;&#xFF0C;&#x83B7;&#x5F97;&#x7684;&#x73B0;&#x91D1;&#x6570;&#x91CF;&#x4E3A; 8&#x3002;&#x5BF9;&#x4E8E;&#x7B2C;&#x4E8C;&#x7EC4;&#x6837;&#x4F8B;&#xFF0C;&#x963F;&#x798F;&#x9009;&#x62E9;&#x7B2C; 1 &#x548C; 4 &#x5BB6;&#x5E97;&#x94FA;&#x884C;&#x7A83;&#xFF0C;&#x83B7;&#x5F97;&#x7684;&#x73B0;&#x91D1;&#x6570;&#x91CF;&#x4E3A; 10+14=24&#x3002;</p><h4 id="&#x6837;&#x4F8B;&#x8F93;&#x5165;">&#x6837;&#x4F8B;&#x8F93;&#x5165;</h4><pre><code>2
3
1 8 2
4
10 7 6 14
</code></pre><h4 id="&#x6837;&#x4F8B;&#x8F93;&#x51FA;">&#x6837;&#x4F8B;&#x8F93;&#x51FA;</h4><pre><code>8
24
</code></pre><h3 id="&#x601D;&#x8DEF;-5">&#x601D;&#x8DEF;</h3><p><strong>&#x72B6;&#x6001;&#x8868;&#x793A;&#xFF1A;&#x524D;i&#x5BB6;&#x5E97;&#x94FA;&#x7684;&#x6700;&#x5927;&#x91D1;&#x989D;<br>&#x72B6;&#x6001;&#x8BA1;&#x7B97;&#xFF1A;<code>f[i] = max(f[i-1] , f[i-2]+a[i])</code></strong><br><img src="https://img2022.cnblogs.com/blog/2731572/202208/2731572-20220810172721695-1180875856.png"></p><h4 id="&#x4EE3;&#x7801;-1">&#x4EE3;&#x7801;</h4><pre><code>#include <bits stdc++.h>

using namespace std;

typedef pair<int,int>PII;
typedef unsigned long long ull;
typedef long long ll;

const int INF = 0x3f3f3f3f;
const int mod = 1e9+7;
int dx[] = {0,1,0,-1};
int dy[] = {-1,0,1,0};

const int N = 100010;
int a[N] , f[N];
int n;

void solve()
{
    cin >> n;

    for(int i = 1;i <= n;i ++) cin>> a[i];

    for(int i = 1;i </=></int,int></bits></code></pre></=></=></int,int></bits>

Original: https://www.cnblogs.com/heystar/p/16566539.html
Author: HeyStar
Title: 【ACM】dp专场训练

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/587908/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球