解题思路:





注意事项:





参考代码:

#include<iostream>
using namespace std;
typedef int I;
#define X(A,B) (A[B[0]][B[1]][B[2]][B[3]][B[4]][B[5]])
double cache[7][7][7][7][7][7];
bool vis[7][7][7][7][7][7];
double win(int h[6])
{ if(X(vis,h)) return X(cache,h);
  X(vis,h)=true;
  X(cache,h)=0.;
  I mx=0;
  for(I i=0;i<6;i++)mx=max(mx,h[i]);
  I i=0,hh[6];
  for(I j=0;j<mx;j++)
  { for(I d=0;d<2;d++)
    {i=0+5*d;
      double loss=0.;
      for(I p=1;p<=3;p++)
       { for(I k=0;k<6;k++)hh[k]=h[k];
        I pp=p;
        I k=i;
        while(pp)
        { if(k<0||k>5)break;
          if(hh[k]>j)hh[k]--,pp--;
          k+=1-2*d;
        }
        loss+=win(hh);
      }
      loss=(1-loss/3.);
      if(loss>X(cache,h))X(cache,h)=loss;
    }
  }
  return X(cache,h);
}
I main()
{ I n;
  while(scanf("%d",&n)==1&&n)
  { I h[6]={0};
    for(I i=0;i<n;i++)scanf("%d",&h[i]);
    printf("%.6lf\n",win(h));
  }
  return 0;
}


点赞(3)
 

0.0分

3 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论