題目描述:
有一家公司要完成乙個課題,該課題分為n個月完成。現在知道每個月至少需要多少人手才能完成這個階段的任務。假如說我們要聘請乙個員工,那麼我們就要有一定的花費(第二行的第乙個數字);假如說我們解雇乙個員工,那麼我們也有一定的花費(第二行的第三個數字)。當然員工也是要拿工資的,每個月拿一定量的工資(假如說某個員工不幹活也是拿工資的,第二行第二個數字),問你完成這個課題,最小需要花費多少錢?
樣例解釋:
3 //乙個課題分三個月解決
4 5 6 //分別為聘請乙個員工的花費、乙個員工的工資、乙個員工被解雇的花費
10 9 11 //第乙個月至少需要10個人,第二個月至少需要9個人,第三個月至少需要11個人
輸出:199
第乙個月聘請10個員工,花費:10*4+10*5(工資+聘請的費用)=90
第二個月不聘請員工(當然我們也可以解雇乙個員工,當然也可以完成該階段的任務,但是不聘請員工的做法才能達到最優解,具體你可以自己再紙上算算),花費:10*5=50(工資)
第三個月聘請乙個員工,花費:10*5+4+5=59(10個人的工資+新聘請員工的工資+招聘費用)
那麼總花費就是:90+50+59=199 即為最優解。
解題思路:在某個月我們無法直接判斷究竟該僱傭多少員工,如測試資料,所以我們要用dp的思路,把每個月僱傭不同人數的最優解全部記錄下來
dp[i][j]表示對於第i個階段,保留j個人(要完成當月的任務)所需要的最少花費。j小於等於整個課題需要員工的最大額度
#include int fmax(int a,int b)
int fmin(int a,int b)
{ return aj)
v_nsumaschange=dp[i-1][k]+(k-j)*v_nfire+j*v_nkeep;
if(k
hdu2159 動態規劃
problem description 最近xhd正在玩一款叫做fate的遊戲,為了得到極品裝備,xhd在不停的殺怪做任務。久而久之xhd開始對殺怪產生的厭惡感,但又不得不通過殺怪來公升完這最後一級。現在的問題是,xhd昇掉最後一級還需n的經驗值,xhd還留有m的忍耐度,每殺乙個怪xhd會得到相應的...
hdu 1257 動態規劃
problem description 某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統.但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能超過前一發的高度.某天,雷達捕捉到敵國的飛彈來襲.由於該系統還在試用階段,所以只有一套系統,因此有可能不能攔截所有...
hdu1978動態規劃
還算比較好理解的動態規劃 題意 這是乙個簡單的生存遊戲,你控制乙個機械人從乙個棋盤的起始點 1,1 走到棋盤的終點 n,m 遊戲的規則描述如下 1.機械人一開始在棋盤的起始點並有起始點所標有的能量。2.機械人只能向右或者向下走,並且每走一步消耗一單位能量。3.機械人不能在原地停留。4.當機械人選擇了...