| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:NB,这也能ac,而且把注释掉的初始化部分加上去还变RE....In Reply To:NB,这也能ac,而且把注释掉的初始化部分加上去还变RE.... Posted by:PlayerII at 2010-04-05 09:27:06 注释掉的部分用了变量top,但是top的赋值在后面
> #include <iostream>
> using namespace std;
>
> int chess[205];
> int step[205],n;
>
> double p[2024][205];
>
> void correct(int &num)
> {
> while(num < 0 || num > n)
> {
> if (num < 0)
> num = -num;
> else if (num > n)
> num = 2*n-num;
> }
> }
>
> int main()
> {
> int i,nb,nf,ns,num,round,pos,dice,top,j;
> while(scanf("%d",&n) == 1)
> {
> memset(chess,-1,sizeof(chess));
> scanf("%d",&nf);
> for (i = 0; i < nf; i++)
> {
> scanf("%d",&num);
> chess[num] = 3;
> scanf("%d",&step[num]);
> }
> scanf("%d",&nb);
> for (i = 0; i < nb; i++)
> {
> scanf("%d",&num);
> chess[num] = 1;
> scanf("%d",&step[num]);
> }
> scanf("%d",&ns);
> for (i = 0; i < ns; i++)
> {
> scanf("%d",&num);
> chess[num] = 2;
> }
> /*
> for (i = 0; i <= top; i++)
> {
> for (j = 0; j <= n; j++)
> {
> p[i][j] = 0;
> }
> }
> */
>
> double once = 1.0/6.0;
> p[0][0] = 1;
> top = 1000;
> for (round = 0; round <= top; round ++)
> {
> for (pos = 0; pos < n; pos++)
> {
> if (p[round][pos] > 0)
> {
> for (dice = 1; dice <= 6; dice ++)
> {
> int next = dice+pos;
> correct(next);
>
>
> if (next >= 0 && next <= n)
>
> if (chess[next] == -1)
> {
> p[round+1][next] += (p[round][pos])*once;
> }
> else if (chess[next] == 1)
> {
> next -= step[next];
> correct(next);
> if (next >= 0 && next <= n)
> p[round+1][next] += (p[round][pos])*once;
> }
> else if (chess[next] == 2)
> {
> p[round+2][next] += (p[round][pos])*once;
> }
> else if (chess[next] == 3)
> {
> next += step[next];
> correct(next);
> if (next >= 0 && next <= n)
> p[round+1][next] += (p[round][pos])*once;
> }
> }
> }
> }
> }
> double ans = 0;
> for (i = 0; i <= top; i++)
> {
> ans += p[i][n]*i;
> }
> if (ans > 0)
> printf("%.2lf\n",ans);
> else printf("Impossible\n");
> }
> return 0;
> }
> /*
> 1
> 0
> 0
> 0
>
>
>
>
> */
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator