中山培訓 2016 7 11

2021-07-14 18:50:53 字數 2452 閱讀 3967

description

每個人都知道詹姆斯邦德,著名的007,但很少有人知道很多任務都不是他親自完成的,而是由他的堂弟們吉公尺邦德完成(他有很多堂弟),詹姆斯已經厭倦了把乙個個任務分配給乙個個吉公尺,他向你求助。

每個月,詹姆斯都會收到一些任務,根據他以前執行任務的經驗,他計算出了每個吉公尺完成每個任務的成功率,要求每個任務必須分配給不同的人去完成,每個人只能完成乙個任務。

請你編寫程式找到乙個分配方案使得所有任務都成功完成的概率。

input

輸入第一行包含乙個整數n,表示吉公尺邦德的數量以及任務的數量(正好相等,1<=n<=20)。

接下來n行,每行包含n個0到100之間整數,第i行的第j個數aij表示吉公尺邦德i完成任務j成功的概率為aij%

output

輸出所有任務成功完成最大的概率,結果保留6位小數。

sample input

輸入1: 2

100 100

50 50

輸入2: 2

0 50

50 0

輸入3: 3

25 60 100

13 0 50

12 70 90

sample output

輸出1:

50.000000

輸出2:

25.000000

輸出3:

9.100000

經典的狀態壓縮dp,我居然沒想出來,只是打了個有70分的暴力。

設f[i,j]為第i個人的在j狀態的最優解。

我們有位運算轉移即可。

const

maxn=1048575;

varb:array[1..20] of longint;

f:array[0..maxn] of real;

s:array[0..20,0..20] of real;

a:array[1..20] of longint;

n,i,l,j,k,m,s1,t:longint;

function max(a,b:real):real;

begin

if a>b then max:=a

else max:=b;

end;

begin

readln(n);

fori:=1 to n do

forj:=1 to n do

read(s[i,j]);

b[1]:=1;

f[0]:=100;

fori:=2 to n do

b[i]:=b[i-1]*2;

fori:=1 to b[n] shl 1-1 do

begin

t:=0;

s1:=0;

for j:=1 to n do

if i and b[j]>0 then

begin

inc(s1);

a[s1]:=j;

inc(t);

end;

for j:=1 to s1 do

f[i]:=max(f[i-b[a[j]]]*s[a[j],t]/100,f[i]);

end;

write(f[b[n]shl 1-1]:0:6);

end.

const

maxn=1048575;

varb:array[1..20] of longint;

f:array[0..maxn] of real;

s:array[0..20,0..20] of real;

a:array[1..20] of longint;

n,i,l,j,k,m,s1,t:longint;

function max(a,b:real):real;

begin

if a>b then max:=a

else max:=b;

end;

begin

readln(n);

fori:=1 to n do

forj:=1 to n do

read(s[i,j]);

b[1]:=1;

f[0]:=100;

fori:=2 to n do

b[i]:=b[i-1]*2;

fori:=1 to b[n] shl 1-1 do

begin

t:=0;

s1:=0;

for j:=1 to n do

if i and b[j]>0 then

begin

inc(s1);

a[s1]:=j;

inc(t);

end;

for j:=1 to s1 do

f[i]:=max(f[i-b[a[j]]]*s[a[j],t]/100,f[i]);

end;

write(f[b[n]shl 1-1]:0:6);

end.

中山培訓 2016 7 9

description 為了監視他的n 1 n 50,000 頭奶牛,farmer john購買了新的監視系統。第i頭奶牛位置在 x i,y i 座標為整數,範圍0.1,000,000,000。任意兩頭奶牛的位置不同。fj的監視系統有三個攝像頭,每個攝像頭只能監視一條水平線或者垂直線上的所有奶牛。請...

中山培訓第二題 2016 7 7

給你乙個長度為n的陣列,乙個長為k的滑動的窗體從最左移至最右端,你只能見到視窗的k個數,每次窗體向右移動一位,如下表 你的任務是找出視窗在各位置時的max value,min value.input 第1行n,k,第2行為長度為n的陣列 output 2行,第1行每個位置的min value,第2行...

1 17 1 28中山紀念中學培訓總結

這是我第一次來紀中培訓,在這個高手雲集的地方,我感受到了自己的渺小。比我優秀的人多了去了,這讓我意識到人外有人,天外有天,也激發了我奮鬥的動力。在一次次的全力以赴的比賽中,我收穫了新的知識和技巧,即使很疲勞,但這個過程是快樂的。這裡的訓練方式是我前所未見的 早上做比賽,下午講題,晚上改題。所以需要我...