\(n\)頭牛,每頭牛有智商\(s[i]\)情商\(f[i]\),問如何從中選擇幾頭牛使得智商情商之和最大 且 情商之和、智商之和非負看似兩維難以處理,我們可以先考慮一維,做體積為智商、價值為情商的01揹包,最後遍歷體積不為負的狀態更新答案即可。\(n\le 400,-10^3\le s[i] \le 10^3\)
需要注意的是,體積可能為負,所以我們整體加\(400\times1000\);負數體積遍歷揹包時,因為已經壓縮了一維,原本要倒序遍歷體積,但是這裡是負數,所以要正序遍歷(否則會覆蓋之前的狀態)
另外這裡的揹包體積是恰好填滿,所以初值要全部設為-inf
,而不是\(0\)
#include #include #include using namespace std;
inline int read()
while(ch>='0'&&ch<='9') s=s*10+(ch^'0'), ch=getchar();
if(isf) return -s;
return s;
}#define maxn 404
#define base 400*1000
int n;
int s[maxn],f[maxn];
int dp[800008];
int main()
int ans=0;
for(int i=base;i<=mxs+base;++i)
if(dp[i]>=0)
ans=max(ans, i-base+dp[i]);
printf("%d\n", ans);
return 0;
}
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 頭奶牛進行 了面試,確定了每頭奶牛的智商和情商。貝西有權選擇讓哪些奶牛參加展覽。由於負的智商或情商會造成負面效果,所以貝西不希望出展奶牛的智商之和小於零,或情商之和小於零。滿足這兩個條件下,她希望出展奶牛的智商與情商之和越大越...
洛谷P2340 奶牛會展
題目背景 奶牛想證明它們是聰明而風趣的。為此,貝西籌備了乙個奶牛博覽會,她已經對n 頭奶牛進行 了面試,確定了每頭奶牛的智商和情商。題目描述 貝西有權選擇讓哪些奶牛參加展覽。由於負的智商或情商會造成負面效果,所以貝西不希望出展奶牛的智商之和小於零,或情商之和小於零。滿足這兩個條件下,她希望出展奶牛的...