【背包DP】【2018.9.20普及组模拟】T3(WOJ 3975)保护羊村
題目(保護(hù)羊村):
【題目描述】 ?
偉大的Yyz 幫助羊羊們逃出了城堡,可Jack 自然不會(huì)善罷甘休。“我會(huì)詛咒你們的!”杰杰惱羞成怒地喊道。回到羊村后,羊羊們發(fā)現(xiàn)羊村地震了。看來(lái)Jack的詛咒生效了。當(dāng)務(wù)之急是修補(bǔ)因地震而坍塌的圍墻。
圍墻上有n 個(gè)圓形洞。第i 個(gè)洞的直徑是d_i 米,修復(fù)第i 個(gè)洞的時(shí)間是t_i 分鐘,一個(gè)洞開(kāi)始修就必須修完。不妙的是,據(jù)可靠情報(bào),灰太狼在c 分鐘后就將襲擊羊村,你的任務(wù)當(dāng)然是使灰太狼來(lái)時(shí)剩余洞的總面積最小,以便羊羊們?cè)诨姨莵?lái)時(shí)能夠更好的防御。
【輸入】
第1 行,一個(gè)正整數(shù)n,表示洞的總數(shù)。
第2~n+1 行,每行有2 個(gè)正整數(shù)d_i 和t_i(d_i,n_i≤10,000),d_i 表示 第i 個(gè)洞的直徑,t_i 表示修復(fù)第i 個(gè)洞的時(shí)間。
第n+2 行,一個(gè)正整數(shù)c(c≤1,000,000),表示灰太狼將在c 分鐘后到來(lái)。
【輸出】
輸出一行一個(gè)實(shí)數(shù)s,表示灰太狼來(lái)時(shí)剩余洞的最小面積。
π取3.1416,最后結(jié)果保留4 位小數(shù)。
【樣例輸入】
4
4 1
6 2
12 3
7 2
6
【樣例輸出】
28.2744
【數(shù)據(jù)范圍】
80%的數(shù)據(jù)滿足:1≤n≤15;
100%的數(shù)據(jù)滿足:1≤n≤100
分析:
顯然是一道背包DP(別問(wèn)我為什么寫(xiě)掛了)
把洞看成物體,時(shí)間看成體積,洞的面積看成價(jià)值,這,就是一道01背包求最大價(jià)值。
代碼:
#include<iostream> #include<cstdio> #include<cmath> #include<cstring> #include<algorithm> using namespace std; #define N 120 int n,t[N],c; double dp[1000100],pi=3.1416,ans,ans1,d[N],w[N]; double area(double r){double ans=r*r*pi;return ans; } int main(){scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%lf%d",&d[i],&t[i]);ans1+=area(d[i]/2.0); w[i]=area(d[i]/2.0);}scanf("%d",&c);for(int i=1;i<=n;i++)for(int j=c;j>=t[i];j--)dp[j]=max(dp[j],dp[j-t[i]]+w[i]);//標(biāo)準(zhǔn)背包模板printf("%.4lf",ans1-dp[c]);//總價(jià)值減最大價(jià)值return 0; }?
總結(jié)
以上是生活随笔為你收集整理的【背包DP】【2018.9.20普及组模拟】T3(WOJ 3975)保护羊村的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 统一认证授权平台keycloak太牛了,
- 下一篇: 记录下这一年发生的事