2018 CodeM資格賽 第三題 世界盃

2021-08-20 09:07:34 字數 4604 閱讀 4885

題意:給16支球隊互相勝利的概率,問每支球隊獲勝的概率。

世界盃就要開始啦!真真正正的戰鬥從淘汰賽開始,現在我們給出球隊之間的勝負概率,來**每支球隊奪冠的可能性。

在接下來的篇幅中,我們將簡單介紹淘汰賽階段的規則。

淘汰賽階段的90分鐘常規時間內(含補時階段)進球多的球隊取勝,如果參賽雙方在90分鐘內(含補時階段)無法決出勝負,將進行上下半場各15分鐘的加時賽。加時賽階段,如果兩隊仍未分出勝負,則通過點球大戰決出勝者。也就是說,每場比賽,有且僅有乙個隊能夠晉級到下一輪。

淘汰賽共有16支球隊參加(小組賽階段共分8個小組,每組前兩名晉級),對陣安排如下。

1/8決賽

a組第一對陣b組第二=勝者1

b組第一對陣a組第二=勝者2

c組第一對陣d組第二=勝者3

d組第一對陣c組第二=勝者4

e組第一對陣f組第二=勝者5

f組第一對陣e組第二=勝者6

g組第一對陣h組第二=勝者7

h組第一對陣g組第二=勝者8

獲勝的8個隊進入1/4決賽,即所謂「8強」

1/4決賽

勝者1對陣勝者3=勝者a

勝者2對陣勝者4=勝者b

勝者5對陣勝者7=勝者c

勝者6對陣勝者8=勝者d

1/4決賽的4個獲勝隊進入「4強」

半決賽勝者a對陣勝者c

勝者b對陣勝者d

半決賽獲勝兩隊進入決賽,失利的兩隊爭奪三名

決賽獲勝的隊伍就是最後的冠軍!

球隊會被以1..16進行標號,其分別表示:

1 a組第一;

2 b組第二;

3 c組第一;

4 d組第二;

5 e組第一;

6 f組第二;

7 g組第一;

8 h組第二;

9 b組第一;

10 a組第二;

11 d組第一;

12 c組第二;

13 f組第一;

14 e組第二;

15 h組第一;

16 g組第二。

資料共有16行,每行16個浮點數,第i行第j列的數fi,j表示i和j進行比賽時i獲勝(包括常規時間獲勝、加時賽獲勝以及點球大戰獲勝)的概率。

對於1 <= i, j <= 16 且 i != j, 滿足0 <= fi,j

<= 1, fi,j + fj,i = 1;

對於1 <= i <= 16, 滿足 fi,i = 0。

輸出一行16個浮點數,用空格隔開,分別表示每只球隊獲得世界盃的概率,結尾無空格。

絕對誤差或相對誤差在1e-5之內的解會被判為正確。

0.000 0.133 0.210 0.292 0.670 0.270 0.953 0.353 0.328 0.128 0.873 0.082 0.771 0.300 0.405 0.455

0.867 0.000 0.621 0.384 0.934 0.847 0.328 0.488 0.785 0.308 0.158 0.774 0.923 0.261 0.872 0.924

0.790 0.379 0.000 0.335 0.389 0.856 0.344 0.998 0.747 0.895 0.967 0.383 0.576 0.943 0.836 0.537

0.708 0.616 0.665 0.000 0.146 0.362 0.757 0.942 0.596 0.903 0.381 0.281 0.294 0.788 0.804 0.655

0.330 0.066 0.611 0.854 0.000 0.687 0.983 0.217 0.565 0.293 0.256 0.938 0.851 0.487 0.190 0.680

0.730 0.153 0.144 0.638 0.313 0.000 0.832 0.526 0.429 0.707 0.414 0.617 0.925 0.638 0.526 0.545

0.047 0.672 0.656 0.243 0.017 0.168 0.000 0.357 0.125 0.307 0.879 0.551 0.641 0.959 0.981 0.465

0.647 0.512 0.002 0.058 0.783 0.474 0.643 0.000 0.325 0.494 0.893 0.064 0.563 0.429 0.501 0.872

0.672 0.215 0.253 0.404 0.435 0.571 0.875 0.675 0.000 0.940 0.053 0.329 0.232 0.280 0.359 0.474

0.872 0.692 0.105 0.097 0.707 0.293 0.693 0.506 0.060 0.000 0.040 0.776 0.589 0.704 0.018 0.968

0.127 0.842 0.033 0.619 0.744 0.586 0.121 0.107 0.947 0.960 0.000 0.486 0.266 0.662 0.374 0.698

0.918 0.226 0.617 0.719 0.062 0.383 0.449 0.936 0.671 0.224 0.514 0.000 0.821 0.027 0.415 0.227

0.229 0.077 0.424 0.706 0.149 0.075 0.359 0.437 0.768 0.411 0.734 0.179 0.000 0.841 0.409 0.158

0.700 0.739 0.057 0.212 0.513 0.362 0.041 0.571 0.720 0.296 0.338 0.973 0.159 0.000 0.935 0.765

0.595 0.128 0.164 0.196 0.810 0.474 0.019 0.499 0.641 0.982 0.626 0.585 0.591 0.065 0.000 0.761

0.545 0.076 0.463 0.345 0.320 0.455 0.535 0.128 0.526 0.032 0.302 0.773 0.842 0.235 0.239 0.000

0.0080193239 0.1871963989 0.0797523190 0.1233859685 0.0836167329 0.0438390981 0.0079035829 0.0604644891 0.0237087902 0.0050549016 0.1149551151 0.0679247259 0.0511307364 0.0395744604 0.0800843771 0.0233889799

思路分析:仔細看題目可以知道,給出的pk順序已經是有序的了,就是前面勝利的與臨接的後面勝利的隊伍打。具體來說:把16支隊伍標識成1.....16.

第一輪:1和2打,3和4打,5和6打......15和16打。(這裡是輸入給出的單個隊伍勝利單個隊伍)

第二輪:12中勝利的和34中勝利的打,56中勝利的和78勝利的打,910勝利的和11 12勝利的打......。(將1234看作乙個大組,那麼都減去乙個1之後    0123   除以4 都等於 0 。       同理  5678都減一除以4等於1.....依次類推)

第三輪:1234勝利和5678打,9 10 11 12勝利和13 14 15 16勝利的打。(12345678 減一 除以 8 等於0  ....)。

第四輪12345678 和後面八支隊伍打,決勝出冠軍。

我們可以看到比賽總共打4輪,每輪在乙個當前大組內的決出乙個勝利者進行下輪  比如12 打34  勝利者進入第三輪。那麼我們將1234看作大組,將12 和 34 看作兩個小組,這兩個小組已經在上一輪決出勝負,1 2 減一 除以 2 是一組,3 4 減一除以2 是一組。

然後說完分組,來說概率。

在乙個大組內,比如1234.我們可以分別算出1 2 3 4在乙個大組內勝出的概率  記為dp[1.....4][2](第二輪)。  假設1要勝出,那麼1要勝利了2 之的概率也就是  dp[1][1](第一輪勝出的概率) ,如果3勝出 那麼dp[1][1] * dp[3][1](3在第一輪勝出的概率)*f[1][3](1要勝3的概率)    加上  如果4要勝出的概率 dp[1][1] * dp[4][1](4在第一輪勝出的概率)*f[1][4](1要勝3的概率) 。

一直遞推就是答案。

dp[i][j]代表第i支球隊在j輪勝出的概率。

總共進行4輪

dp[i][4]就是答案。

**如下:

#include #include #include using namespace std;

const int maxn = 20;

double f[20][20],n;

double dp[20][10];

int main()

}memset(dp,0,sizeof(0));

for(int i=1;i<=16;i++)

for(int i=2;i<=4;i++){

int sub = 1 << i;

// printf("%d\n",sub);

for(int j=1;j<=16;j++){

for(int k=1;k<=16;k++){

if((k-1)/sub == (j-1)/sub){

// printf("+++++++++++++++++++++++\n");

if((k-1)/(sub/2)!=(j-1)/(sub/2)){

// cout<<"---------"<

2018 CodeM 資格賽 下單

這道題目應該算簽到題了吧 我大概掃了一下,感覺這道題目應該是最簡單的 注 如果您現在還沒有ac,並且比賽還沒有結束,我建議再想想,認真再重新讀下題目描述,或許你就會發現原來是自己想複雜了 不管你是不是這樣的情形,反正我當時是這樣的,哈哈 程式設計 1000分 下單 時間限制 c c 1秒,其他語言 ...

2018 CodeM 資格賽 B 可樂

小美和小團最近沉迷可樂。可供ta們選擇的可樂共有k種,比如可口可樂 零度可樂等等,每種可樂會帶給小美和小團不同的快樂程度。ta們一共要買n瓶可樂,每種可樂可以買無限多瓶,小美會隨機挑選其中的m瓶喝,剩下的n m瓶小團喝。請問應該如何購買可樂,使得小美和小團得到的快樂程度的和的期望值最大?現在請求出購...

CodeM資格賽第二題

小美和小團最近沉迷可樂。可供ta們選擇的可樂共有k種,比如可口可樂 零度可樂等等,每種可樂會帶給小美和小團不同的快樂程度。ta們一共要買n瓶可樂,每種可樂可以買無限多瓶,小美會隨機挑選其中的m瓶喝,剩下的n m瓶小團喝。請問應該如何購買可樂,使得小美和小團得到的快樂程度的和的期望值最大?現在請求出購...