全wa求助!!!

P1048 [NOIP2005 普及组] 采药

``` #include <bits/stdc++.h> using namespace std; const int maxn=110; int a[maxn],b[maxn]; long long dp[maxn*10]; int main(){ int t,m; cin >>t>>m; for(int i=1;i<=m;i++) cin>>a[i]>>b[i]; for(int i=1;i<=m;i++){ for(int j=t;j>=a[i];--j) dp[j]=max(dp[j],dp[j-a[i]]+b[i]; } cout <<dp[t]; } ``` $1$. 数据范围看错了。药材的总数为$m$,而你开到了$10^3$; $2$. $dp[]$ 作为全局变量本身就是默认赋值为$0$,所以没有必要再进行初始化。 $3$. 这道题是一道01背包,如果只用1维的话应该采用倒序循环,具体原因可以参考一下网上资料和辅导书。 这个代码我稍微改了一下,没有运行,谨慎复制。
by smyoking @ 2023-07-15 16:37:21


|