Codevs 1025 选菜
1025 選菜
?
?時間限制: 1 s ?空間限制: 128000 KB ?題目等級 : 黃金 Gold 題解 題目描述?Description?? ? ??在小松宿舍樓下的不遠處,有PK大學(xué)最不錯的一個食堂——The Farmer’s Canteen(NM食堂)。由于該食堂的菜都很不錯,價格也公道,所以很多人都喜歡來這邊吃飯。The Farmer’s Canteen的點菜方式如同在超市自選商品一樣,人們從一個指定的路口進去,再從一個指定的路口出來并付款。由于來這里就餐的人數(shù)比較多,所以人們自覺地在進入口的時候就排成一個長隊,沿著長長的擺放著各式各樣佳肴的桌子進行選菜。
?????? 小松發(fā)現(xiàn),這種選菜方式意味著,他不能在選菜的時候離開隊伍去拿一些他已經(jīng)看過了的菜或者沒有看過的菜,因為插隊是不禮貌的,也是被BS的。
?????? 每個菜有一個價值,而小松也自己給每個菜定了一個在他看來的美味價值,例如紅燒小黃魚在小松看來是美味價值很高的,而花菜在小松眼里則是美味價值極低的菜肴。而有一些菜是營養(yǎng)價值極其高的菜(例如米飯),所以無論它的美味價值是多少,小松都會選擇1份?,F(xiàn)在小松帶了X元錢來食堂就餐,他想知道,在不欠帳的情況下,他選菜的美味價值總合最大是多少。
輸入描述?Input Description?? ? ??請從輸入文件farmer.in中讀入相關(guān)數(shù)據(jù)。輸入的第一行包括兩個個整數(shù)n(1≤n≤100),k(0≤k≤實際菜的種類)和一個實數(shù)X(0≤X≤100),表示有n個菜式,有k種菜是必選的,小松帶來了X元錢(精確到“角”)。接下來的1行包含n個實數(shù),表示菜桌上從入口到出口的所有菜的價格(0≤價格≤10,單位“元”,精確到“角”);再接下來的1行包含n個整數(shù),表示菜桌上從入口到出口的所有菜的美味價值(0≤美味價值≤100);再接下來一行包含n個整數(shù),表示菜桌上從入口到出口的所有菜的種類編號(1≤種類編號≤100)。最后一行包含k個整數(shù),分別表示必選菜的種類編號。要注意的是,同一種編號的菜可以出現(xiàn)多次,但是他們的價格和美味價值都是一樣的。對于同一種菜(無論是不是必選菜),小松最多只會選擇1份(買兩份紅燒豆腐多沒意思啊)。另外,必選菜的價格之和一定不超過X。
輸出描述?Output Description?? ? ??請將結(jié)果輸出到輸出文件farmer.out中。輸出包含一個整數(shù),表示小松能選到的菜的美味價值總和最大是多少。
???????注:你可以假設(shè)數(shù)據(jù)中不會出現(xiàn)小松帶的錢不夠買必買菜的情況。
?
樣例輸入?Sample Input7 1 5.0
4 1 3 0.9 2 0.5 0.9
7 3 5 2 5 0 2
6 3 5 2 4 1 2
2
樣例輸出?Sample Output10
/*把價格*2變成整數(shù),01背包 */ #include<iostream> #include<cstdio> #include<algorithm> int n,m,k,dp[1010],ans; double s; int vis[110]; using namespace std; struct node{int w,v,id; }a[110]; int cmp(node x,node y){return x.id<y.id;} int main(){scanf("%d%d%lf",&n,&k,&s);m=s*10/1;for(int i=1;i<=n;i++){scanf("%lf",&s);a[i].w=s*10/1;}for(int i=1;i<=n;i++)scanf("%d",&a[i].v);for(int i=1;i<=n;i++)scanf("%d",&a[i].id);int x;for(int i=1;i<=k;i++){scanf("%d",&x);vis[x]=1;}for(int i=1;i<=n;i++){if(vis[a[i].id]==1){vis[a[i].id]=2;ans+=a[i].v;m-=a[i].w;}}for(int i=1;i<=n;i++){if(vis[a[i].id])continue;for(int j=m;j>=a[i].w;j--){dp[j]=max(dp[j],dp[j-a[i].w]+a[i].v);}vis[a[i].id]=1;}ans+=dp[m];printf("%d",ans); }?
轉(zhuǎn)載于:https://www.cnblogs.com/thmyl/p/7222879.html
總結(jié)
以上是生活随笔為你收集整理的Codevs 1025 选菜的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 升级Struts2.5后使用DMI动态方
- 下一篇: Bluetooth Obex