hdu 4248 A Famous Stone Collector
首先发现一个很头痛的问题,下面是2个求排列组合的代码
- memset(C,,sizeof(C));
- for(int i=;i<;i++)
- {
- C[i][]=;
- for(int j=;j<=;j++)
- C[i][j]=(C[i-][j]+C[i-][j-])%MOD;
- }
- C[][]=;
- for(int i=;i<;i++)
- for(int j=;j<=;j++)
- if(j==) C[i][j]=C[i-][j];
- 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种颜色的石
- #include<cstdio>
- #include<cstring>
- #include<iostream>
- #define MOD 1000000007
- using namespace std;
- typedef long long LL;
- LL C[][];
- void get_c()
- {
- memset(C,,sizeof(C));
- for(int i=;i<;i++)
- {
- C[i][]=;
- for(int j=;j<=;j++)
- C[i][j]=(C[i-][j]+C[i-][j-])%MOD;
- }//这一步是错的,不知为啥
- C[][]=;
- for(int i=;i<;i++)
- for(int j=;j<=;j++)
- if(j==) C[i][j]=C[i-][j];
- else C[i][j]=(C[i-][j]+C[i-][j-])%MOD;
- }
- LL dp[][];
- int main()
- {
- int cas=,sum,n,num;
- LL ans;
- get_c();
- while(scanf("%d",&n)!=EOF)
- {
- memset(dp,,sizeof(dp));
- dp[][]=;
- sum=;
- for(int i=;i<=n;i++)
- {
- scanf("%d",&num);
- sum+=num;
- for(int k=;k<=num;k++)
- {
- for(int j=k;j<=sum;j++)
- dp[i][j]=(dp[i][j]+(dp[i-][j-k]*C[j][k])%MOD)%MOD;
- }
- }
- ans=;
- for(int i=;i<=sum;i++)
- ans=(ans+dp[n][i])%MOD;
- printf("Case %d: %I64d\n",++cas,ans);
- }
- return ;
- }
hdu 4248 A Famous Stone Collector的更多相关文章
- HDU 4248 A Famous Stone Collector 组合数学dp ****
A Famous Stone Collector Time Limit: 30000/15000 MS (Java/Others) Memory Limit: 32768/32768 K (Ja ...
- [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 ...
- 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个石头) ...
- hdu 5996 dingyeye loves stone(博弈)
题目链接:hdu 5996 dingyeye loves stone 题意: 给你一棵树,树的每一个节点有a[i]个石子,每个人可以将这个节点的石子移向它的父亲,如果没有合法操作,那么就算输,现在给你 ...
- hdu 4255 A Famous Grid
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=4255 A Famous Grid Description Mr. B has recently dis ...
- HDU 4256 The Famous Clock
The Famous Clock Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- hdu 1115:Lifting the Stone(计算几何,求多边形重心。 过年好!)
Lifting the Stone Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- HDU 4253 Two Famous Companies
Two Famous Companies Time Limit: 15000ms Memory Limit: 32768KB This problem will be judged on HDU. O ...
- 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 ...
随机推荐
- 使用ContentProContentProvider共享生词本数据
自定义ContentProvider需要在项目清单中注册: import android.content.ContentProvider;import android.content.ContentU ...
- sql取年月日
Sql Server 中一个非常强大的日期格式化函数 Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM Select CON ...
- 套汇问题 Floyd
问题:套汇. 思路:Floyd 代码: #include <cstdio> #include <cstdlib> #include <ctime> #define ...
- C++-dynamic_cast的用处
主要用来在没有实现文件,只有头文件的情况下,添加派生类的功能,如下例给programmer加奖金. 注意:dynamic_cast不能用于没有virtual函数的类 ///////////////// ...
- POJ 3237
题目大意:指定一颗树上有3个操作:询问操作,询问a点和b点之间的路径上最长的那条边的长度:取反操作,将a点和b点之间的路径权值都取相反数:变化操作,把某条边的权值变成指定的值. #include &l ...
- IntelliLock托管代码保护和许可授权管理系统软件详细介绍及下载
IntelliLock是一个能用于控件与应用程序许可授权的100%托管的先进解决方案.与.NET Reactor提供的基于源代码保护的授权许可系统不同,IntelliLock选择了以100%托管的方式 ...
- java基础之 反射
首先,我们在开始前提出一个问题: 1.在运行时,对于一个java类,能否知道属性和方法:能否去调用它的任意方法? 答案是肯定的. 本节所有目录如下: 什么是JAVA的反射机制 JDK中提供的Refle ...
- Visual Studio环境色调配色
据说对眼睛有好处的色调配色 vs 色调rgb 199,240,214 色调为84,饱和度为91,亮度为205 色调为85,饱和度为123,亮度205: “色调”由160更改为75-85之间——> ...
- 新版的tomcat里面get请求通过http协议的时候似乎默认是UTF-8的编码了吗?
不在servler.xml的connector中添加URICoding=“UTF-8”,使用默认值一样没有乱码,而添加URICoding=“iso-8859-1”就是乱码了. POST请求还是用iso ...
- hdu 1069
//Accepted 264 KB 0 ms //每种block只有三种方法,且每种放法至多放一次 //规定三条边的顺序后 //把所有的block按x递增排序,x相同则按y递增排序 //然后dp // ...