寂寞的oier之家吧 关注:83贴子:3,850
  • 5回复贴,共1

关于poj1850

只看楼主收藏回复

一道很简单的dp/组合数学,为什么总是WA


1楼2013-08-03 22:57回复
    核心代码:
    for(int i=1;i<=26;i++)dp[0][i]=i;dp[0][0]=26;
    long long s=26,s1;
    for(int i=1;i<n;i++){
    s1=0;
    for(int j=1;j<=26-i;j++)
    dp[i][j]=s1+=s-dp[i-1][j];
    dp[i][0]=s=s1;
    }
    // for(int i=0;i<n;i++){for(int j=0;j<27-i;j++)printf("%d ",dp[i][j]);printf("\n");}
    long long ans=0;
    for(int i=0;i<n-1;i++)ans+=dp[i][0];
    if(q[0]>0)ans+=dp[n-1][q[0]];
    for(int i=1;i<n;i++){
    int v=q[i]-q[i-1]-1;
    if(v>0)ans+=dp[n-1-i][v];
    }
    ans++;
    printf("%d\n",(int)ans);


    2楼2013-08-03 22:58
    收起回复
      2025-05-19 09:51:01
      广告
      我承认我shabby了。
      补偿:新核心代码
      for(int i=1;i<n;i++)ans+=c[26][i];
      for(int i=0;i<q[0];i++)ans+=c[25-i][n-1];
      for(int i=1;i<n;i++)
      for(int j=q[i-1]+1;j<q[i];j++)
      ans+=c[25-j][n-i-1];


      4楼2013-08-04 22:50
      回复


        5楼2018-03-20 17:01
        回复