zoukankan      html  css  js  c++  java
  • 51nod 1450 闯关游戏——期望dp

    题目:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1450

    想了半天,不知道不能走的状态(即最后不足m个的状态)怎么办。去吃晚饭的路上想到那种也是转移到 f[ i ][ j ] 自己,因为意义是需要再来一次,状态没有前进。

    想出那个之前稍微看了点题解,不过只看到需要按 y 排序。若非此自己可能还想不到要排序。还对拍验证了一下,确实有差异。

    把 y 大的排在前面,x 值大是第二关键字。之所以排在前面,是因为前面的影响更大(是倒着推的,所以排在后面,为了先算上),就想搜索的时候把分叉少的排在前面一样。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #define db double
    using namespace std;
    const int N=2005; const db INF=0x3f3f3f3f;
    int n,m;
    db f[N][N<<1];
    struct Node{
      db x,y,z;
    }a[N];
    bool cmp(Node u,Node v){return u.y==v.y?u.x<v.x:u.y<v.y;}
    int rdn()
    {
      int ret=0,fx=1; char ch=getchar();
      while(ch>'9'||ch<'0'){ if(ch=='-') fx=-1; ch=getchar();}
      while(ch>='0'&&ch<='9') ret=(ret<<3)+(ret<<1)+ch-'0',ch=getchar();
      return ret;
    }
    int main()
    {
      //  freopen("51nod1450-data.in","r",stdin);
      //  freopen("51nod1450-bl.out","w",stdout);
      n=rdn(); m=rdn();
      for(int i=1;i<=n;i++)
        a[i].x=(db)rdn()/1000,a[i].y=(db)rdn()/1000,a[i].z=1-a[i].x-a[i].y;
      sort(a+1,a+n+1,cmp);
      for(int i=0;i<m;i++) f[n+1][i]=INF;
      for(int i=m,d=((n+1)<<1);i<=d;i++) f[n+1][i]=0;
      for(int i=n;i;i--)
        for(int j=0,d=(i<<1);j<=d;j++)
          {
        //    printf("i=%d j=%d
    ",i,j);
        //    printf("f[i+1][j+1]=%.8lf f[i+1][j+2]=%.8lf
    ",f[i+1][j+1],f[i+1][j+2]);
        if(f[i+1][j+1]==INF)
          {
            if(f[i+1][j+2]==INF)
              f[i][j]=INF;
            else f[i][j]=(a[i].y*f[i+1][j+2]+1)/(1-a[i].x-a[i].z);
          }
        else f[i][j]=(a[i].x*f[i+1][j+1]+a[i].y*f[i+1][j+2]+1)/(1-a[i].z);
        //    printf("f[%d][%d]=%.8lf
    ",i,j,f[i][j]);
          }
      printf("%.8lf
    ",f[1][0]);
      return 0;
    }
  • 相关阅读:
    准备重启blog。。。
    愿我成功省一。
    [LUOGU]P5502 [JSOI2015]最大公约数
    [LUOGU]P3400 仓鼠窝
    [LUOGU]P5149 会议座位
    OI退役记
    新开博客园~~
    1108 模拟赛
    牛客1102
    题解 CF21B 【Intersection】
  • 原文地址:https://www.cnblogs.com/Narh/p/9638225.html
Copyright © 2011-2022 走看看