zoukankan      html  css  js  c++  java
  • 2014年9月6日

    第一题,神题不可做。

    第二题,傻逼题裸裸的转移。。显而易见。

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 using namespace std;
     5 double a[20][20];
     6 double dp[2000010];
     7 int main()
     8 {
     9 //    freopen("b.in","r",stdin);
    10 //    freopen("b.out","w",stdout);
    11     int N;
    12     scanf("%d",&N);
    13     for(int i=1;i<=N;i++)
    14         for(int j=1;j<=N;j++)
    15             scanf("%lf",&a[i][j]);
    16     for(int i=1;i<(1<<N);i++)
    17         dp[i]=0.0;
    18     dp[0]=1.0;
    19     for(int i=0;i<=(1<<N);i++)
    20     {
    21         int cnt=N,x=i;
    22         while(x)
    23         {
    24             cnt--;
    25             x=x&(x-1);
    26         }
    27         for(int j=0;j<N;j++)
    28             if(!(i&(1<<j)))
    29                 for(int k=0;k<N;k++)
    30                     if(!(i&(1<<k)))
    31                         if(j!=k)
    32                         {
    33                             dp[i|(1<<j)]+=dp[i]*(double)2/((double)(cnt-1)*(cnt))*(a[k+1][j+1]);
    34                         }
    35     }
    36     int T=(1<<N)-1;
    37     for(int i=0;i<N;i++)
    38         printf("%.5lf
    ",dp[T-(1<<i)]);
    39 }
    View Code

    第三题,用01串表示最大fibonacci数来表示,然后dp转移,当场考试我就差了一点,一种比较特殊的情况,导致我直接WA10,←_←。。。

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 using namespace std;
     5 #ifdef  WIN32
     6 #define LL "%I64d"
     7 #else
     8 #define LL "%lld"
     9 #endif
    10 long long b[110],T;
    11 bool c[110],d[110];
    12 long long x[110];
    13 long long dp[110][2];
    14 int main() 
    15 {
    16 //    freopen("c.in","r",stdin);
    17 //    freopen("c.out","w",stdout);
    18     b[1]=1;
    19     b[2]=2;
    20     for(int i=3;i<=91;i++)
    21     {
    22         b[i]=b[i-1]+b[i-2];
    23     }
    24     scanf(LL,&T);
    25     long long a;
    26     while(T--)
    27     {
    28         scanf(LL,&a);
    29         int maxx=0;
    30         long long ans=1;
    31         memset(c,0,sizeof(c));
    32         memset(d,0,sizeof(d));
    33         if(a<=0)
    34         {
    35             cout<<"0"<<endl;
    36             continue;
    37         }
    38         for(int i=91;i>=1;i--)
    39         {
    40             if(a>=b[i])
    41                 maxx=max(maxx,i),d[i]=c[i]=true,a-=b[i];
    42         }
    43         long long cnt=0;
    44         long long nn=0;
    45         for(int i=1;i<=maxx;i++)
    46         {
    47             if(!d[i])
    48                 cnt++;
    49             else
    50             {
    51                 x[++nn]=cnt;
    52                 cnt=0;
    53             }
    54         }
    55         dp[0][0]=1;
    56         dp[0][1]=0;
    57         for(int i=1;i<=nn+1;i++)
    58         {
    59             dp[i][0]=dp[i-1][0]+dp[i-1][1];
    60             dp[i][1]=dp[i-1][0]*(x[i]/2)+dp[i-1][1]*((x[i]+1)/2);
    61         }
    62         printf(LL "
    ",dp[nn+1][0]);
    63     }
    64     return 0;
    65 }
    View Code
  • 相关阅读:
    VC++SDK编程——字体及位置示例
    VC2008以资源形式实现多语言版本(非Unicode) .转
    跟着编程之美学算法——最长递增子序列(转)
    跟着编程之美学算法——最长公共子序列
    MFC的多国语言界面的实现
    随意输入N个英文字符,找出其中最长连续的排列。
    C++读写EXCEL文件方式比较 .
    操作EXCEL和符号分隔文本的类CSpreadSheet .
    每个程序员都必读的12篇文章
    VC项目配置详解
  • 原文地址:https://www.cnblogs.com/JackSlowFuck/p/3962954.html
Copyright © 2011-2022 走看看