CF_402F dp+组合数学
题目链接:http://codeforces.com/problemset/problem/403/D
/**算法分析:
这道题综合的考察了dp背包思想和组合数学
*/
#include<bits/stdc++.h>
#define MAXN 1050
#define PI acos(-1.0)
#define MOD 1000000007
#define REP(i,n) for(int i=0; i<n; i++)
#define FOR(i,s,t) for(int i=s; i<=t; i++)
#define mem(a,b) memset(a,b,sizeof(a))
#define show(x) { cerr<<">>>"<<#x<<" = "<<x<<endl; }
#define showtwo(x,y) { cerr<<">>>"<<#x<<"="<<x<<" "<<#y<<" = "<<y<<endl; }
using namespace std; int n,k;
int dp[MAXN][]; //dp[i][j]表示把i分成j个不同的数的方案数
int C[MAXN][]; //组合数
long long fact[]; //阶乘 void init_dp()
{
mem(dp,);
dp[][] = ;
//用0,1背包思想:数字i看成体积为i的物品,放到总体积为n的容器内的方案数
//实际的dp: dp[d][i][j];但考虑的数的是d是,能够用j个不同的数凑出i的方案数,第一维被优化了
//转移方程:dp[d][i][j] = dp[d-1][i][j] + dp[d-1][i-d][j-1],分为用与不用d这个数
for(int d=; d<MAXN; d++)
for(int i=MAXN-; i>=d; i--)
for(int j=min(d+,); j>=; j--)
dp[i][j] = (dp[i][j] + dp[i-d][j-])%MOD;
mem(C,);
for(int i=; i<MAXN; i++)
{
C[i][] = ;
for(int j=; j<=min(i,); j++)
C[i][j] = (C[i-][j]+C[i-][j-])%MOD;
}
fact[] = ;
for(int i=; i<; i++) fact[i] = fact[i-]*i%MOD;
} int main()
{
//freopen("E:\\acm\\input.txt","r",stdin);
init_dp();
int T; cin>>T;
while(T --)
{
int n,k; scanf("%d %d",&n,&k);
int m = k*(k+)/;
if(n < m) printf("0\n");
else
{
long long ans = ;
for(int i=m; i<=n; i++)
ans = (ans + (long long)C[n-i+k][k]*dp[i][k])%MOD;
printf("%I64d\n",ans*fact[k]%MOD);
}
}
}
CF_402F dp+组合数学的更多相关文章
- CF_229E_Gift_概率DP+组合数学
CF_229E_Gift_概率DP+组合数学 题目描述: 很久很久以前,一位老人和他的妻子住在蔚蓝的海边.有一天,这位老人前去捕鱼,他捉到了一条活着的金鱼.鱼说:“噢,老渔人!我祈求你放我回到海里,这 ...
- [多校联考2019(Round 5 T3)]青青草原的表彰大会(dp+组合数学)
[多校联考2019(Round 5)]青青草原的表彰大会(dp+组合数学) 题面 青青草原上有n 只羊,他们聚集在包包大人的家里,举办一年一度的表彰大会,在这次的表彰大会中,包包大人让羊们按自己的贡献 ...
- [Codeforces722E] Research Rover (dp+组合数学)
[Codeforces722E] Research Rover (dp+组合数学) 题面 给出一个N*M的方格阵,从(1,1)出发,到(N,M)结束,从(x,y)只能走到(x+1,y)或(x,y+1) ...
- CCF 201312-4 有趣的数 (数位DP, 状压DP, 组合数学+暴力枚举, 推公式, 矩阵快速幂)
问题描述 我们把一个数称为有趣的,当且仅当: 1. 它的数字只包含0, 1, 2, 3,且这四个数字都出现过至少一次. 2. 所有的0都出现在所有的1之前,而所有的2都出现在所有的3之前. 3. 最高 ...
- 【BZOJ 3294】 3294: [Cqoi2011]放棋子 (DP+组合数学+容斥原理)
3294: [Cqoi2011]放棋子 Description Input 输入第一行为两个整数n, m, c,即行数.列数和棋子的颜色数.第二行包含c个正整数,即每个颜色的棋子数.所有颜色的棋子总数 ...
- Codeforces - 1081C - Colorful Bricks - 简单dp - 组合数学
https://codeforces.com/problemset/problem/1081/C 这道题是不会的,我只会考虑 $k=0$ 和 $k=1$ 的情况. $k=0$ 就是全部同色, $k=1 ...
- Codeforces 840C 题解(DP+组合数学)
题面 传送门:http://codeforces.com/problemset/problem/840/C C. On the Bench time limit per test2 seconds m ...
- 2019牛客多校第五场 G subsequence 1 dp+组合数学
subsequence 1 题意 给出两个数字串s,t,求s的子序列中在数值上大于t串的数量 分析 数字大于另一个数字,要么位数多,要么位数相同,字典序大,位数多可以很方便地用组合数学来解决,所以只剩 ...
- [HNOI2008],[bzoj1008] 越狱(dp+组合数学)
题目传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1008 Description 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人 ...
随机推荐
- HttpContext
HttpContext 类:封装有关个别 HTTP 请求的所有 HTTP 特定的信息.也有人叫上下文信息. 1.生存周期:从客户端用户点击并产生了一个向服务器发送请求开始---服务器处理完请求并生成返 ...
- windows下使用MinGW的调试工具gdb.exe调试C程序
1.编译源代码 C:MinGW\bin>gcc.exe -g -o program.exe program.c 编译选项上要加上“g”,这样生成的目标程序会含有调试内容,再用gdb调试的时候才能 ...
- 【intellij】异常信息汇总
Application Server was not connected before run configuration stop, reason: javax.management.Instanc ...
- Intel HEX file结构
https://en.wikipedia.org/wiki/Intel_HEX 1, Intel Hex每行的组成 开始标志+Byte数+地址+数据类型+数据+Checksum 2, 开始标志 冒号: ...
- BZOJ 2818GCD
Description 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对. Input 一个整数N Output 如题 Sample Input 4 Sam ...
- 时钟周期、振荡周期、机器周期、CPU周期、状态周期、指令周期、总线周期、任务周期
http://blog.csdn.net/yangtalent1206/article/details/5853017 计算机系统有一系列的“周期”概念,区别.联系地理解这些概念至关重要.以下对时钟周 ...
- Hibernate与数据库分表
数据库分片(shard)是一种在数据库的某些表变得特别大的时候采用的一种技术. 通过按照一定的维度将表切分,可以使该表在常用的检索中保持较高的效率,而那些不常用的记录则保存在低访问表中.比如:销售记录 ...
- Mongodb介绍
MongoDB 是一个高性能,开源,无模式的文档型数据库,是当前noSql数据库产品中最热门的一种.它在许多场景下用于替代传统的关系型数据库或键值对存储方式,MongoDB是用C++开发,MongoD ...
- 如何组织css,写出高质量的css代码
!如何组织css一:css的API 属于基础部分,这部分的能力用“对”和“错”来评判. 比如说把文字设置为红色,只能用color:red:这种写法是对的,其他任何写法都是错的. 二:css框架 不能用 ...
- How Does #DeepDream Work?
How Does #DeepDream Work? Do neural networks hallucinate of electronic dogs? If you’ve been browsing ...