首先发现一个很头痛的问题,下面是2个求排列组合的代码

  1. memset(C,,sizeof(C));
  2. for(int i=;i<;i++)
  3. {
  4. C[i][]=;
  5. for(int j=;j<=;j++)
  6. C[i][j]=(C[i-][j]+C[i-][j-])%MOD;
  7. }
  1. C[][]=;
  2. for(int i=;i<;i++)
  3. for(int j=;j<=;j++)
  4. if(j==) C[i][j]=C[i-][j];
  5. else C[i][j]=(C[i-][j]+C[i-][j-])%MOD;

其中第一个是刘汝佳上面的代码,不知为什么在杭电OJ上就是WA,第二个就能AC,就路过的大神指点

题目大意

给你一些不同颜色的石头,问选出一些石头排成一排总共有多少种不同排法,不同数量的石头视为不同情况,每个位置上的石头颜色都相同视为相同情况。

分析 

dp+排列组合

dp[i][j] 表示前i堆石子构成长度为j的串的方案数;

状态转移方程是:k为i堆使用的数量

dp[i][j] = (dp[i][j] + dp[i-1][j-k] * C[j][k]%MOD)%MOD;

可以这样想

 dp[ i ][ j ] = dp[ i-1 ][ j ]; //未放入第i种颜色的石头

 dp[ i ][ j ] += dp[ i-1 ][ j - k ] * C[ j ][ k ];  //放入k个第i种颜色的石 

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<iostream>
  4. #define MOD 1000000007
  5. using namespace std;
  6. typedef long long LL;
  7. LL C[][];
  8. void get_c()
  9. {
  10. memset(C,,sizeof(C));
  11. for(int i=;i<;i++)
  12. {
  13. C[i][]=;
  14. for(int j=;j<=;j++)
  15. C[i][j]=(C[i-][j]+C[i-][j-])%MOD;
  16. }//这一步是错的,不知为啥
  17.  
  18. C[][]=;
  19. for(int i=;i<;i++)
  20. for(int j=;j<=;j++)
  21. if(j==) C[i][j]=C[i-][j];
  22. else C[i][j]=(C[i-][j]+C[i-][j-])%MOD;
  23. }
  24. LL dp[][];
  25. int main()
  26. {
  27. int cas=,sum,n,num;
  28. LL ans;
  29. get_c();
  30. while(scanf("%d",&n)!=EOF)
  31. {
  32. memset(dp,,sizeof(dp));
  33. dp[][]=;
  34. sum=;
  35. for(int i=;i<=n;i++)
  36. {
  37. scanf("%d",&num);
  38. sum+=num;
  39. for(int k=;k<=num;k++)
  40. {
  41. for(int j=k;j<=sum;j++)
  42. dp[i][j]=(dp[i][j]+(dp[i-][j-k]*C[j][k])%MOD)%MOD;
  43. }
  44. }
  45. ans=;
  46. for(int i=;i<=sum;i++)
  47. ans=(ans+dp[n][i])%MOD;
  48. printf("Case %d: %I64d\n",++cas,ans);
  49. }
  50. return ;
  51. }

hdu 4248 A Famous Stone Collector的更多相关文章

  1. HDU 4248 A Famous Stone Collector 组合数学dp ****

    A Famous Stone Collector Time Limit: 30000/15000 MS (Java/Others)    Memory Limit: 32768/32768 K (Ja ...

  2. [ACM] hdu 4248 A Famous Stone Collector (DP+组合)

    A Famous Stone Collector Problem Description Mr. B loves to play with colorful stones. There are n c ...

  3. HDOJ 4248 A Famous Stone Collector DP

    DP: dp[i][j]前i堆放j序列长度有多少行法, dp[i][j]=dp[i-1][j] (不用第i堆), dp[i][j]+=dp[i-1][j-k]*C[j][k] (用第i堆的k个石头) ...

  4. hdu 5996 dingyeye loves stone(博弈)

    题目链接:hdu 5996 dingyeye loves stone 题意: 给你一棵树,树的每一个节点有a[i]个石子,每个人可以将这个节点的石子移向它的父亲,如果没有合法操作,那么就算输,现在给你 ...

  5. hdu 4255 A Famous Grid

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=4255 A Famous Grid Description Mr. B has recently dis ...

  6. HDU 4256 The Famous Clock

    The Famous Clock Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  7. hdu 1115:Lifting the Stone(计算几何,求多边形重心。 过年好!)

    Lifting the Stone Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  8. HDU 4253 Two Famous Companies

    Two Famous Companies Time Limit: 15000ms Memory Limit: 32768KB This problem will be judged on HDU. O ...

  9. HDU 4251 The Famous ICPC Team Again 主席树

    The Famous ICPC Team Again Problem Description   When Mr. B, Mr. G and Mr. M were preparing for the ...

随机推荐

  1. 使用ContentProContentProvider共享生词本数据

    自定义ContentProvider需要在项目清单中注册: import android.content.ContentProvider;import android.content.ContentU ...

  2. sql取年月日

    Sql Server 中一个非常强大的日期格式化函数 Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM Select CON ...

  3. 套汇问题 Floyd

    问题:套汇. 思路:Floyd 代码: #include <cstdio> #include <cstdlib> #include <ctime> #define ...

  4. C++-dynamic_cast的用处

    主要用来在没有实现文件,只有头文件的情况下,添加派生类的功能,如下例给programmer加奖金. 注意:dynamic_cast不能用于没有virtual函数的类 ///////////////// ...

  5. POJ 3237

    题目大意:指定一颗树上有3个操作:询问操作,询问a点和b点之间的路径上最长的那条边的长度:取反操作,将a点和b点之间的路径权值都取相反数:变化操作,把某条边的权值变成指定的值. #include &l ...

  6. IntelliLock托管代码保护和许可授权管理系统软件详细介绍及下载

    IntelliLock是一个能用于控件与应用程序许可授权的100%托管的先进解决方案.与.NET Reactor提供的基于源代码保护的授权许可系统不同,IntelliLock选择了以100%托管的方式 ...

  7. java基础之 反射

    首先,我们在开始前提出一个问题: 1.在运行时,对于一个java类,能否知道属性和方法:能否去调用它的任意方法? 答案是肯定的. 本节所有目录如下: 什么是JAVA的反射机制 JDK中提供的Refle ...

  8. Visual Studio环境色调配色

    据说对眼睛有好处的色调配色 vs 色调rgb 199,240,214 色调为84,饱和度为91,亮度为205 色调为85,饱和度为123,亮度205: “色调”由160更改为75-85之间——> ...

  9. 新版的tomcat里面get请求通过http协议的时候似乎默认是UTF-8的编码了吗?

    不在servler.xml的connector中添加URICoding=“UTF-8”,使用默认值一样没有乱码,而添加URICoding=“iso-8859-1”就是乱码了. POST请求还是用iso ...

  10. hdu 1069

    //Accepted 264 KB 0 ms //每种block只有三种方法,且每种放法至多放一次 //规定三条边的顺序后 //把所有的block按x递增排序,x相同则按y递增排序 //然后dp // ...