日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

烹调方案(洛谷-P1417)

發布時間:2025/3/17 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 烹调方案(洛谷-P1417) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目描述

一共有n件食材,每件食材有三個屬性,ai,bi和ci,如果在t時刻完成第i樣食材則得到ai-t*bi的美味指數,用第i件食材做飯要花去ci的時間。

眾所周知,gw的廚藝不怎么樣,所以他需要你設計烹調方案使得美味指數最大

輸入輸出格式

輸入格式:

第一行是兩個正整數T和n,表示到達地球所需時間和食材個數。

下面一行n個整數,ai

下面一行n個整數,bi

下面一行n個整數,ci

輸出格式:

輸出最大美味指數

輸入輸出樣例

輸入樣例#1:

74 1
502
2
47

輸出樣例#1:

408

思路:

一開始沒想明白,看了 tinylic 大佬的解釋后才明白的

如果沒有 b 屬性的話,那么是一個標準的 01 背包題

根據題意,假設現在已經耗費了 t 時間,那么有:

  • a[x]-(t+c[x])*b[x]+a[y]-(t+c[x]+c[y])*b[y]

  • a[y]-(t+c[y])*b[y]+a[x]-(t+c[y]+c[x])*b[x]

化簡后,得到式1>式2的條件是 c[x]*b[y]<c[y]*b[x],因此只要滿足這個條件的物品對(x,y),x在y前的代價永遠最優,根據這個條件排序后,就是簡單的01背包

源代碼

#include<iostream> #include<algorithm> using namespace std;int max(int x,int y) {if(x>y) return x;else return y; }struct food{//結構體long long ai;long long bi;long long ci; }arr[10000000];bool cmp(food x,food y) {return x.ci*y.bi<y.ci*x.bi;//比較美味度 }long long dp[10000000]={0}; int main() {long long t,n;long long i,j;long long result=0;cin>>t>>n; //到達地球時間與食物個數for(i=1;i<=n;i++) cin>>arr[i].ai;//屬性afor(i=1;i<=n;i++) cin>>arr[i].bi;//屬性bfor(i=1;i<=n;i++) cin>>arr[i].ci;//屬性csort(arr+1,arr+1+n,cmp);//對各種食材的美味度進行比較for(i=1;i<=n;i++)//遍歷每種食材for(j=t;j-arr[i].ci>=0;j--)//至各食材制作時間等于總時間為止dp[j]=max(dp[j],dp[j-arr[i].ci]+arr[i].ai-j*arr[i].bi);//arr[i].ai-j*arr[i].bi即美味指數for(i=1;i<=t;i++) result=max(result,dp[i]);//尋找最大值cout<<result<<endl;return 0; }

?

總結

以上是生活随笔為你收集整理的烹调方案(洛谷-P1417)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。