各位大佬,我的朴素代码哪错了? 优化成一位后过了
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e7+10;
int t,m,a[N],b[N],f[N];
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
// freopen("P1616.in","r",stdin);
// freopen("P1616.out","w",stdout);
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=a[i];j<=t;j++)
f[j]=max(f[j],f[j-a[i]]+b[i]);
cout<<f[t];
return 0;
}
二维的怎么调都不对……(本地测的,空间不会爆)
有大佬帮忙看看吗(弱小无助)
```cpp
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e7+10;
int t,m,a[N],b[N],f[N][N];
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
// freopen("P1616.in","r",stdin);
// freopen("P1616.out","w",stdout);
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=0;j<=t;j++)
if(j>=a[i])f[i][j]=max(f[i-1][j],f[i][j-a[i]]+b[i]);
cout<<f[m][t];
return 0;
}
谢谢!