社区讨论

站外题求助

学术版参与者 7已保存回复 27

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
27 条
当前快照
1 份
快照标识符
@mhjd3roh
此快照首次捕获于
2025/11/04 00:36
4 个月前
此快照最后确认于
2025/11/04 06:11
4 个月前
查看原帖

以德服人

时间限制:C/C++ 1500MS,其他语言 3000MS
内存限制:C/C++ 10MB,其他语言 20MB

描述

小炎计划在 MM 天内修炼 NN 门武技(编号 1N1∼N)。对于每一门武技,修炼的天数不同,增加的武德也不尽相同,也就是说:
对于第 ii 门武技,若共修炼了 jj 天,小炎将获得 AijA_{ij} 武德。注:小炎在同一时刻无法修炼多门技能! 求:MM 天后,小炎的武德有多充沛(即最多能获得多少武德)?

输入描述

11 行,两个整数 NNMM 接下来 NN 行,每行 MM 个整数 AijA_{ij} ,描述第 ii 门技能
【测试数据范围】1N20001M10001Aij1041≤N≤2000,1≤M≤1000,1≤A _{ij}≤10 ^4

输出描述

输出一行,一个整数
用例输入 1
2 2 1 2 1 3 用例输出 1
3 用例输入 2
2 2 2 1 2 1 用例输出 2
4 用例输入 3
2 3 3 2 1 3 2 1 用例输出 3
6 用例输入 4
6 8 4 4 1 2 2 8 9 6 4 3 7 9 3 2 6 8 4 2 3 3 5 8 7 4 8 1 4 3 7 5 9 3 5 7 3 9 8 5 5 5 3 7 8 9 2 7 8 3 用例输出 4
34

MY CODE

CPP
#include <bits/stdc++.h>
using namespace std;
int dp[2001],a[2001][1001];
int main()
{
    int n,m;
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)
        for (int j=1;j<=m;j++)
        	scanf("%d",&a[i][j]);
    for (int i=1;i<=n;i++)
        for (int j=1;j<=m;j++)
            for (int k=m;k>=j;k--)
                dp[k]=max(dp[k-j]+a[i][j],dp[k]);
    printf("%d",dp[m]);
  	return 0;
}

回复

27 条回复,欢迎继续交流。

正在加载回复...