RQNOJ103_最大利润
題目描述
X市的一家化工廠最近購買了一批重量為n克的化學(xué)原料。這種原料可以進(jìn)行A,B兩種化學(xué)實(shí)驗(yàn),每種實(shí)驗(yàn)有其固定的利潤及損耗率。已知,1克的原料做 A實(shí)驗(yàn)可得利潤a元,但有p的損耗; 同樣,1 克的原料做B實(shí)驗(yàn)可得利潤b元,但有q的損耗。
一次全體實(shí)驗(yàn)定義為:將手頭現(xiàn)有的全部原料一部分做A實(shí)驗(yàn),另一部分做B實(shí)驗(yàn)。其利潤為做A 實(shí)驗(yàn)的總利潤與做B實(shí)驗(yàn)的總利潤之和。
于是一個(gè)問題擺在面前,若化工廠準(zhǔn)備做m次全體實(shí)驗(yàn),那么如何安排每次實(shí)驗(yàn),才能使得總利潤最大呢?請(qǐng)你編程解決這個(gè)問題。
輸入格式
輸入文件僅1行,依次為: m, n,a,b,p,q
其中n,m,a,b為整數(shù),且0<m<=30, 0<n<10000, 0<a,b<=1000,0<p<1, 0<q<1。
輸出格式
輸出文件僅一行,為最大利潤,并保留五位小數(shù)
樣例輸入
3 100 300 500 0.3 0.6
樣例輸出
79000.00000
//------------------------------------------------------------------------------------------
f[i,j]表示第i次試驗(yàn)開始時(shí),有j克原料的最大利潤.
c[i]表示第i次實(shí)驗(yàn)的利潤率,c[i]=f[i,j]/j,即c[i]*j=f[i,j].
從后往前倒推,我們發(fā)現(xiàn)第M次實(shí)驗(yàn)顯然是哪種實(shí)驗(yàn)的利潤率大就做哪種實(shí)驗(yàn).
即c[m]=max(a,b).
令p=1-p,q=1-q,表示實(shí)驗(yàn)完后剩余的原料.
假設(shè)第i-1次實(shí)驗(yàn)用x克做A實(shí)驗(yàn),0<=x<=j.
f[i-1,j]=ax+b(j-x)+f[i,xp+(j-x)q]
???????? =ax+bj-bx+c[i]*[xp+(j-x)q]
???????? =[a-b+c[i]*(p-q)]x+(b+c[i]*q)j
這是關(guān)于x的一次函數(shù).
顯然當(dāng)x=0或j時(shí)取到最值.
當(dāng)a-b+c[i]*(p-q)>0時(shí),函數(shù)為增函數(shù),x=j時(shí)取最值.
f[i-1,j]=c[i-1]*j=a*j+f[i,j*p]=a*j+c[i]*j*p
c[i-1]=c[i]*p+a;
當(dāng)a-b+c[i]*(p-q)<=0時(shí),同理可得c[i-1]=c[i]*q+b;
ans=c[1]*n;
code:
var f:array[0..31] of real;m,n,a,b,i:longint;p,q:real;beginreadln(m,n,a,b,p,q);if a>b then f[m]:=aelse f[m]:=b;p:=1-p; q:=1-q;for i:=m-1 downto 1 doif a-b+f[i+1]*(p-q)>0 then f[i]:=a+f[i+1]*pelse f[i]:=b+f[i+1]*q;writeln(f[1]*n:0:5); end.轉(zhuǎn)載于:https://www.cnblogs.com/exponent/archive/2011/08/08/2130592.html
與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的RQNOJ103_最大利润的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: svn里ignore不需要提交的用户文档
- 下一篇: 如何使得WIN7下用VS2010做出的M