代码是这样的
#include <iostream>
#include <algorithm>
#include <stdio.h>
#define HRiver2 return
#define Warma 0//极 其 靠 谱的大姐姐来保佑我(
#define ll long long
using namespace std;
ll f[100015],a[100015],b[100015],t,m;
int main()
{
scanf("%lld%lld",&t,&m);
for(ll i=1;i<=m;i++)
scanf("%lld%lld",&a[i],&b[i]);
for(ll i=1;i<=m;i++)
{
for(ll j=a[i];j<=t;j++)
{
if(f[j-a[i]]+b[i]>f[j])
f[j]=f[j-a[i]]+b[i];
}
}
// for(ll i=1;i<=t;i++)
printf("%lld",f[t]);
HRiver2 Warma;//我在想桃子(
}
如果看上面那个注释比较烦,这里有一份纯净版
#include <iostream>
#include <algorithm>
#include <stdio.h>
#define ll long long
using namespace std;
ll f[100015],a[100015],b[100015],t,m;
int main()
{
scanf("%lld%lld",&t,&m);
for(ll i=1;i<=m;i++)
scanf("%lld%lld",&a[i],&b[i]);
for(ll i=1;i<=m;i++)
{
for(ll j=a[i];j<=t;j++)
{
if(f[j-a[i]]+b[i]>f[j])
f[j]=f[j-a[i]]+b[i];
}
}
printf("%lld",f[t]);
return 0;
}
谢谢各位大佬了,倒数第二个测试点的数据我也放在这里了
输入
3794898 1
6041 3102
输出
1948056
今天看完完全背包就来做这个,没想到我竟然菜到这个地步,不愧于我的签名