# $奶牛會展$
題目鏈結
由於智商之和或情商之和不能為負數,所以直接把智商+情商》0的奶牛加上是布星的
我們考慮揹包,不妨將智商當做物品大小,將情商當做價值
我們要求 大小+價值 的最大值
\(dp[j]\)表示智商為\(j\)時情商的最大值
當智商為負數時,\(dp[j]\)是會**的,所以我們用\(dp[j+400040]\)存\(dp[j]\)
我們要跑\(01\)揹包,但是滾動陣列滾的順序是需要注意的
當\(i\)的智商\(a[i]>0\)時,要\(j\)從大到小列舉,防止乙個物品選多次
而當\(i\)的智商\(a[i]<0\)時,\(j\)從小到大列舉
**:
#include#include#includeusing namespace std;
int n,a[410],b[410];
int d=400040,ans;
int dp[800100],maxm,minm;
int main()
for(int i=1;i<=n;i++)
if(a[i]>=0)
for(int j=maxm;j>=minm;j--)
dp[j+d]=max(dp[j+d],dp[j+d-a[i]]+b[i]);
else
for(int j=minm;j<=maxm;j++)
dp[j+d]=max(dp[j+d],dp[j+d-a[i]]+b[i]);
for(int i=d;i<=maxm+d;i++)
if(dp[i]>=0)
ans=max(ans,i-d+dp[i]);
printf("%d\n",ans);
return 0;
}
洛谷P2340 奶牛會展
題目背景 奶牛想證明它們是聰明而風趣的。為此,貝西籌備了乙個奶牛博覽會,她已經對n 頭奶牛進行 了面試,確定了每頭奶牛的智商和情商。題目描述 貝西有權選擇讓哪些奶牛參加展覽。由於負的智商或情商會造成負面效果,所以貝西不希望出展奶牛的智商之和小於零,或情商之和小於零。滿足這兩個條件下,她希望出展奶牛的...
P2340 奶牛會展
f i 表示當 智商為i 時,情商 最高為多 少f i 表示當智商為i時,情商最高為多少 f i 表示 當智商為 i時,情 商最高為 多少具體類似講解請移步我的另一篇部落格 include define rep i,a,b for register int i a i b i define don ...
P2340 奶牛會展(狀壓dp)
奶牛想證明它們是聰明而風趣的。為此,貝西籌備了乙個奶牛博覽會,她已經對n 頭奶牛進行 了面試,確定了每頭奶牛的智商和情商。貝西有權選擇讓哪些奶牛參加展覽。由於負的智商或情商會造成負面效果,所以貝西不希望出展奶牛的智商之和小於零,或情商之和小於零。滿足這兩個條件下,她希望出展奶牛的智商與情商之和越大越...