[JOYOI] 1124 花店橱窗
生活随笔
收集整理的這篇文章主要介紹了
[JOYOI] 1124 花店橱窗
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目限制
時間限制 內存限制 評測方式 題目來源
1000ms 131072KiB 標準比較器 Local
題目背景xq和他的老婆xz最近開了一家花店,他們準備把店里最好看的花都擺在櫥窗里。但是他們有很多花瓶,每個花瓶都具有各自的特點,因此,當各個花瓶中放入不同的花束時,會產生不同的美學效果。為了使櫥窗里的花擺放的最合適,他們得想個辦法安排每種花的擺放位置。可是因為xq和xz每天都太忙,沒有時間設計櫥窗里花的擺法,所以他們想讓你幫他們求出花擺放的最大美觀程度和每種花所放的位置。題目描述每種花都有一個標識,假設杜鵑花的標識數為1,秋海棠的標識數為2,康乃馨的標識數為3,所有的花束在放入花瓶時必須保持其標識數的順序,即:杜鵑花必須放在秋海棠左邊的花瓶中,秋海棠必須放在康乃馨左邊的花瓶中。如果花瓶的數目大于花束的數目。則多余的花瓶必須空置,且每個花瓶中只能放一束花。每種花放在不同的瓶子里會產生不同的美觀程度,美觀程度可能是正數也可能是負數。上述例子中,花瓶與花束的不同搭配所具有的美觀程度,如下表所示:花 瓶1 2 3 4 51 (杜鵑花) 7 23 -5 -24 162 (秋海棠) 5 21 -4 10 233 (康乃馨) -21 5 -4 -20 20根據上表,杜鵑花放在花瓶2中,會顯得非常好看;但若放在花瓶4中則顯得十分難看。為取得最大美觀程度,你必須在保持花束順序的前提下,使花束的擺放取得最大的美學值,并求出每種花應該擺放的花瓶的編號。輸入格式
第1行:兩個整數F和V,表示xq和xz一共有F種花,V個花瓶。(1<=F<=V<=100)
第2行到第F+1行:每行有V個數,表示花擺放在不同花瓶里的美觀程度值value。(美觀程度和不超過maxint,美觀程度有正有負。)
輸出格式
輸出有兩行:第一行為輸出最大美觀程度和的值,第二行有F個數表示每朵花應該擺放的花瓶的編號。提示
其實就是簡單的DP,花店櫥窗問題啦。
注意盡量靠前放啊!
樣例數據
輸入樣例 #1 輸出樣例 #1
3 5
7 23 -5 -24 16
5 21 -4 10 23
-21 5 -4 -20 20
53
2 4 5
簡單的DP,枚舉上一個花瓶放置的位置,記錄路徑的DP確實第一次寫,好多小細節出問題,還是得多寫寫。
//Stay foolish,stay hungry,stay young,stay simple #include<iostream> #include<stack> using namespace std;int n,m; int a[105][105]; int f[105][105]; int pre[105][105]; int ans=-(1<<28),mxid;void print(int id,int pos){if(id==0||pos==0) return;print(id-1,pre[id-1][pos]);cout<<pos<<" "; } int main(){cin>>n>>m;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin>>a[i][j];f[i][j]=-(1<<28);}}for(int i=1;i<=n;i++){int tmp=0;for(int j=i;j<=m;j++){pre[i][j]=i-1;for(int k=i-1;k<j;k++){ // f[i][j]=max(f[i-1][k]+a[i][j],f[i][j]);if(f[i-1][k]+a[i][j]>f[i][j]){f[i][j]=f[i-1][k]+a[i][j];pre[i][j]=k;//}}}}for(int i=n;i<=m;i++) if(ans<f[n][i])ans=f[n][i],mxid=i;cout<<ans<<endl;print(n,pre[n][mxid]);cout<<mxid<<endl;return 0; }轉載于:https://www.cnblogs.com/ghostcai/p/9247453.html
總結
以上是生活随笔為你收集整理的[JOYOI] 1124 花店橱窗的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ProxySQL Cluster 概述
- 下一篇: 值传递与引用传递