hdu6397 Character Encoding 母函数解约束条件下多重集
http://acm.hdu.edu.cn/showproblem.php?pid=6397
原问题的本质是问m个元素的多重集S,每一种类型的对象至多出现n-1次的S的k组合的个数是多少?
等价于 x1+x2+...+xm=k 0<xi<=n-1 的解的个数
当xi没有上限(xi<=n-1)时由隔板法得C(k+m-1,m-1)
而有上限时,方法是构造母函数(1+x+....+x^(n-1))^m 答案是x^k的系数
对母函数用等比数列求和再二项式展开加泰勒展开得答案。orz(解法来自知乎,侵删)
#define _CRT_SECURE_NO_WARNINGS
#include<cmath>
#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<cstring>
using namespace std;
#define rep(i,t,n) for(int i =(t);i<=(n);++i)
#define per(i,n,t) for(int i =(n);i>=(t);--i)
#define mmm(a,b) memset(a,b,sizeof(a))
typedef long long ll;
const int maxn = 5e5 + ;
const ll mod = ; int n, m, k; ll inv[maxn], f[maxn], fac[maxn];
ll c[maxn];
long long kpow(long long a, long long n) {
long long res = ;
while (n > ) {
if (n & )res = res * a%mod;
a = a * a%mod;
n >>= ;
}
return res;
}
void init() {
f[] = ; f[] = ;
fac[] = fac[] = ;
inv[] = ;
rep(i, , maxn) {
fac[i] = fac[i - ] * (ll)i % mod;
inv[i] = kpow(fac[i], mod - );
}
}
ll C(int n, int m) {
if (n < m) return 0ll;
if (m == || n == m) return 1ll;
if (n - == m || m == ) return n;
return fac[n] * inv[m] % mod * inv[n - m] % mod;
} int main() {
int t;
cin >> t;
init();
while (t--) {
cin >> n >> m >> k;
mmm(c, );
ll fl = ;
ll ans = ;
rep(r, , k / n) {
ans += fl * C(m, r)*C(m + k - n * r - , k - n * r) % mod; fl = -fl;
if (ans < )ans += mod;
ans %= mod;
}
cout << ans << endl;
} }
hdu6397 Character Encoding 母函数解约束条件下多重集的更多相关文章
- hdu6397 Character Encoding 隔板法+容斥原理+线性逆元方程
题目传送门 题意:给出n,m,k,用m个0到n-1的数字凑出k,问方案数,mod一个值. 题目思路: 首先如果去掉数字范围的限制,那么就是隔板法,先复习一下隔板法. ①k个相同的小球放入m个不同的盒子 ...
- A - Character Encoding HDU - 6397 - 方程整数解-容斥原理
A - Character Encoding HDU - 6397 思路 : 隔板法就是在n个元素间的(n-1)个空中插入k-1个板,可以把n个元素分成k组的方法 普通隔板法 求方程 x+y+z=10 ...
- java.sql.SQLException: Unsupported character encoding 'utf8mb4'.
四月 12, 2017 3:47:52 下午 org.apache.catalina.core.StandardWrapperValve invoke 严重: Servlet.service() fo ...
- zend studio打开文件提示unsupported character encoding
zend studio打开文件提示unsupported character encoding,是文件的编码方式错误. 有可能是PHP代码中,charset={CHARSET} ,用了变量的形式调用编 ...
- 使用tomcat运行时提示some characters cannot be mapped using iso-8859-1 character encoding异常
今天第一次使用java进行jsp项目搭建,也是第一次使用tomcat.tomcat是运行java web的一个小型服务器,属于Apache的一个开源免费的服务. 在运行web 的时候,我们就要先配置好 ...
- 使用英文版eclipse保存代码,出现some characters cannot be mapped using "Cp1251" character encoding.
some characters cannot be mapped using "Cp1251" character encoding. 解决办法:方案一: eclipse-> ...
- NPM使用详解(下)
NPM使用详解(下) *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !impo ...
- Character Encoding tomcat.
default character encoding of the request or response body: If a character encoding is not specified ...
- javac命令详解(下)
摘自http://blog.csdn.net/hudashi/article/details/7058999 javac命令详解(下) -ver ...
随机推荐
- 安装SQL Server For Linux(Install SQL Server)
SQL Server on Ubuntu——Ubuntu上的SQL Server(全截图) 1. 安装SQL Server 官网安装指南:https://docs.microsoft.com ...
- Zuul路由转发规则
定制的路由规则的主要功能: 1.路由表中包含源路径,微服务名称,目标路径 2.Endpoint粒度配置支持 3.路由支持1对1精确路由 4.源路径可以前缀/**格式来模糊路由 5.目标路径可以使用前缀 ...
- 同一个脚本在SQLPLUS和SQLDEV上的不同
前几天收集了信息给Oracle.oracle那边表示格式不正确.让我又一次收集.我非常费解,我是依照官方文档做的呀,怎么会? 于是我果断自己搭了一个环境:RHEL5.8+10.2.0.5 客户那边没法 ...
- loadrunner上传文件到网盘
有人提问,loadrunner 上传文件搞不好,请求帮忙处理.让提供网址,用fiddler抓包上传部分,主要有3个请求 第一个请求GET https://yun.xxx.com/api/files/u ...
- vue项目使用webpack loader把px转换为rem
下载lib-flexible https://github.com/amfe/lib-flexible npm i lib-flexible --save 在main.js中引入lib-flexibl ...
- Weka算法Clusterers-Xmeans源代码分析(一)
<p></p><p><span style="font-size:18px">上几篇博客都是分析的分类器算法(有监督学习),这次就分 ...
- Mysql 地区经纬度 查询
摘要: Mysql数据库,根据地区的经纬度信息,查询附近相邻的地区 2015-03-27 修改,增加 MySQL的空间扩展(MySQL Spatial Extensions)的解决方案: MySQL的 ...
- CLOS架构是啥?
有多少种技术能够在六十五年后依旧能够熠熠生辉,在IT的基础架构中扮演着重要角色?CLOS架构应该算是一项.Clos架构,诞生于1952年,是由由贝尔实验室一位叫Charles Clos的人提出的.CL ...
- Go指南练习_切片
源地址 https://tour.go-zh.org/moretypes/18 一.练习题描述 实现 Pic.它应当返回一个长度为 dy 的切片,其中每个元素是一个长度为 dx,元素类型为 uint8 ...
- oracle 11G rac 11.2.0.1 打补丁9413827
这是升级到以后11.2.0.2.11.2.0.3.11.2.0.4的基础 主要参考两篇文章: Upgrade_11.2.0.1_GI_CRS_to_11.2.0.2_in_Linux.PDF文件 ht ...