DP 系統可靠性 題目 題解

2021-05-26 10:31:08 字數 2438 閱讀 2188

description

乙個系統由若干部件串聯而成,只要有乙個部件故障,系統就不能正常執行,為提高系統的可靠性,每一部件都裝有備用件,一旦原部件故障,備用件就自動進入系統。顯然備用件越多,系統可靠性越高,但費用也越大,那麼在一定總費用限制下,系統的最高可靠性等於多少?

給定一些系統備用件的單價ck,以及當用mk個此備用件時部件的正常工作概率pk(mk),總費用上限c。求系統可能的最高可靠性。

input

第一行:n c

第二行:c1 p1(0) p1(1) …p1(x1) (0<=x1<=[c/ck])

… 第 n 行:cn pn(0) pn(1) … pn(xn) (0<=xn<=[c/cn])

output

系統可能的最高可靠性。

sample input

2 20
3 0.6 0.65 0.7 0.75 0.8 0.85 0.9
5 0.7 0.75 0.8 0.8 0.9 0.95
sample output

0.6375
hint

dp 資源分配型別

附:題解+**

program systemcode;

var n,money:longint;

a:array [0..100,-1..100] of real;//用a[i,j]表示第i項備用件花了j*i元能取得的最高可靠性,特別地,a[i,-1]表示這項備用件的費用,a[i,0]表示不花錢或者買不起乙個第i項備用件所得到的最高可靠性

f:array [0..100,0..100] of real;//用f[i,j]表示前i項備用件用j元錢能取得的最高可靠性

procedure init;

var i,j:longint;

begin

readln(n,money);

for i:=1 to n do

begin

read(a[i,-1]);

for j:=0 to (money div trunc(a[i,-1])) do read(a[i,j]);

readln;

end;

end;

function max(x,y:real):real;

begin

if x>y then exit(x) else exit(y);

end;

procedure main;

var i,j,k,tx:longint;

temp:real;

begin

temp:=1;

for i:=0 to money do

begin

tx:=i div trunc(a[1,-1]);//這裡是對應買了幾個第1項備用件

if tx>0 then

begin

f[1,i]:=a[1,tx];//買得起則對應標號

continue;

endelse

begin

f[1,i]:=a[1,0]; //買不起則對應不花錢的情況

continue;

end;

end;

for i:=1 to n do

begin

temp:=a[i,0]*temp;

f[i,0]:=temp;

end;

for i:=2 to n do//i=1時我們已經人工算出了每個情況的最高可靠性

begin

for j:=0 to money do

begin

tx:=j div trunc(a[i,-1]);//當前的錢能買幾個第i項備用件

for k:=0 to tx do f[i,j]:=max(f[i-1,j-k*trunc(a[i,-1])]*a[i,k],f[i,j]);//這些錢我們可以一點都不用在買第i項備用件,或者全用來買第i項備用件,或者買k個第i項備用件

//dp方程:f[i,j]=max,這裡f[i,j]主要是用來被覆蓋更新的,在初始情況下,它一定會被f[i-1,j-k*trunc(a[i,-1])]替換,此後通過打擂台更新f[i,j]

end;

end;

end;

begin

assign(input,'systemcode.in'); reset(input);

assign(output,'systemcode.out'); rewrite(output);

init;

main;

writeln(f[n,money]:0:4);

close(input); close(output);

end.

系統可靠性計算

系統可靠性計算 系統可靠性計算是軟考考試的乙個重點,近些年幾乎每次考試都會考到,但這個知識點的難度不高,了解基本的運算公式,即可輕鬆應對。可靠性計算主要涉及三種系統,即串聯系統 併聯系統和冗餘系統,其中串聯系統和併聯系統的可靠性計算都非常簡單,只要了解其概念,公式很容易記住。冗餘系統要複雜一些。在實...

可靠性測試學習 可靠性測試理解

最近測試可靠性,參考了業界的一些思維,有些想法和建議 先說說軟體可靠性的定義,根據我測試的體會和思考,我覺得軟體的可靠性就是軟體系統發生故障後自動恢復或者人工干預使其能恢復到正常狀態的能力 業界的測試有些把容錯測試和可靠性測試搞混淆,其實兩者不一樣,容錯測試是通過模擬一些可能發生的已知的異常操作而檢...

產品可靠性

產品可靠性 影響產品可靠性的三個方面 1.電應力 2.機械應力 3.環境應力。下面從上述三個方面展開講述。應力 專案 內容 備註電應力 物料 1.pcb 商 2.pcb抽檢 3.元器件選型 元器件選型指導書 4.採購渠道 商資質a b c類 5.儲存 msl 6.領料 原理設計 1.電路方案 2.電...