uva542 - France '98

说实话,这道题,我开始的时候都没看懂题意,,,

搜了篇解题报告也没看懂,,,

等我把网页上的粘下来一看,我明白了

1 Brazil -----+
               +-- ? --+
 2 Chile ------+       |
                       +-- ? --+
 3 Nigeria ----+       |       |
               +-- ? --+       |
 4 Denmark ----+               |
                               +-- ? --+
 5 Holland ----+               |       |
               +-- ? --+       |       |
 6 Yugoslavia -+       |       |       |
                       +-- ? --+       |
 7 Argentina --+       |               |
               +-- ? --+               |
 8 England ----+                       |
                                       +-- World Champion
 9 Italy ------+                       |
               +-- ? --+               |
10 Norway -----+       |               |
                       +-- ? --+       |
11 France -----+       |       |       |
               +-- ? --+       |       |
12 Paraguay ---+               |       |
                               +-- ? --+
13 Germany ----+               |
               +-- ? --+       |
14 Mexico -----+       |       |
                       +-- ? --+
15 Romania ----+       |
               +-- ? --+
16 Croatia ----+
用的还是动规的记忆化搜索,晋级的规则很像二叉树的构造,把晋级图画出来差不多就懂了,(代码差不多是照抄的,,,)

代码如下:

#include <cstdio>
double pp[16][16], f[16][5];
char c[16][20];
int mypow(int n)
{
    int ans = 1;
    for(int i = 0; i < n; i++) ans*=2;
    return ans;
}
double fun(int x, int y)
{
    if(y==0) return 1;
    double &ans = f[x][y];
    if(ans) return ans;
    int mid = mypow(y-1);
    int len = mid*2;
    int a, b;
    if(x%len<mid) {a = (x/mid+1)*mid; b = (x/mid+2)*mid;}
    else {a = (x/mid-1)*mid; b = (x/mid)*mid; }
    for(int i = a; i < b; i++)
    ans += pp[x][i]*fun(i,y-1);
    return ans *= fun(x,y-1);
}
int main ()
{
    int tt;
    for(int i = 0; i < 16; i++) gets(c[i]);
    for(int i = 0; i < 16; i++) for(int j = 0; j < 16; j++)
    {scanf("%d",&tt); pp[i][j] = tt*1.0/100;}
    for(int i = 0; i < 16; i++) printf("%-10s p=%.2lf%c\n",c[i],fun(i,4)*100,'%');
    return 0;
}


posted on 2013-05-20 22:09  Primo...  阅读(142)  评论(0编辑  收藏  举报