社区讨论
萌新不会dp,求助
P2340[USACO03FALL] Cow Exhibition G参与者 3已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @lo7zkwte
- 此快照首次捕获于
- 2023/10/27 10:20 2 年前
- 此快照最后确认于
- 2023/10/27 10:20 2 年前
9pts
CPP#include <bits/stdc++.h>
using namespace std;
const int MAXN=405;
const int MAXJ=400000;
struct Cow{
int iq,eq;
}cow[MAXN];
int n,f[2*MAXJ+5];
int main()
{
memset(f,~0x3f3f3f3f,sizeof f);
scanf("%d",&n);
f[MAXJ]=0;
for(int i=1;i<=n;i++){
scanf("%d%d",&cow[i].iq,&cow[i].eq);
}
for(int i=1;i<=n;i++){
if(cow[i].iq>0){
for(int j=MAXJ;j>=-MAXJ;j--){
if(-MAXJ<=j-cow[i].iq&&j-cow[i].iq<=MAXJ) f[j+MAXJ]=max(f[j+MAXJ],f[j-cow[i].iq+MAXJ]+cow[i].eq);
}
}
else{
for(int j=-MAXJ;j<=MAXJ;j++){
if(-MAXJ<=j-cow[i].iq&&j-cow[i].iq<=MAXJ) f[j+MAXJ]=max(f[j+MAXJ],f[j-cow[i].iq+MAXJ]+cow[i].eq);
}
}
}
int ans=0;
for(int j=0;j<=MAXJ;j++){
if(f[j+MAXJ]>=0) ans=max(f[j+MAXJ],ans);
}
printf("%d",ans);
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...