BZOJ 3462 DZY Loves Math II ——动态规划 组合数
好题。
首先发现$p$是互质的数。
然后我们要求$\sum_{i=1}^{k} pi*xi=n$的方案数。
然后由于$p$不相同,可以而$S$比较小,都是$S$的质因数
可以考虑围绕$S$进行动态规划。
然后发现有时候许多情况是多余的。因为一整个$S$只能由一些相同的$p$组合而成。
所以这些部分可以用组合数计算,剩下的部分可以用背包处理出来。
需要滚动数组,而且需要前缀和转移。
#include <cmath>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define int long long
#define F(i,j,k) for (int i=j;i<=k;++i)
#define D(i,j,k) for (int i=j;i>=k;--i)
#define maxn 2000005
#define md 1000000007
int pri[10],f[2][maxn<<3],s,q,top=0;
int Dp()
{
int now=0,pre=1;
memset(f[now],0,sizeof f[now]);
f[now][0]=1;
F(i,1,top)
{
now^=1;pre^=1;memset(f[now],0,sizeof f[now]);
int up=s/pri[i]-1;
F(l,0,pri[i]-1)
{
int presum=0;
for (int j=0;j<=(s*top-l)/pri[i];j++)
{
presum+=f[pre][j*pri[i]+l];presum%=md;
if (j>=up+1) presum-=f[pre][(j-up-1)*pri[i]+l];
f[now][j*pri[i]+l]=presum;
}
}
}
return now;
} int ksm(int a,int b)
{
int ret=1;
for (;b;b>>=1,a=a*a%md) if (b&1) ret=ret*a%md;
return ret;
} int C(int n,int m)
{
n=n+1; m=m-1;
n=n+m-1;
int ret=1;
for(int i=n;i>=n-m+1;i--)
ret=ret*(i%md)%md;
F(i,1,m) ret=ret*ksm(i,md-2)%md;
return ret;
} signed main()
{
scanf("%lld%lld",&s,&q);int x=s;
F(i,2,sqrt(s))
{
if (s%i==0) s/=i,pri[++top]=i;
if (s%i==0)
{
while(q--) printf("0\n");
return 0;
}
}
if (s>1) pri[++top]=s; s=x;
int now=Dp();
while(q--)
{
int ret=0;
int n;scanf("%lld",&n);
F(i,1,top) n-=pri[i];
if (n<0) {printf("0\n"); continue;}
int m=n/s,k=n-m*s;
F(i,0,min(top,m))
ret=(ret+f[now][i*s+k]*C(top+m-i-top,top%md)%md)%md;
printf("%lld\n",(ret+md)%md);
}
}
BZOJ 3462 DZY Loves Math II ——动态规划 组合数的更多相关文章
- bzoj 3462: DZY Loves Math II
3462: DZY Loves Math II Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 211 Solved: 103[Submit][Sta ...
- ●BZOJ 3309 DZY Loves Math
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=3309 题解: 莫比乌斯反演,线筛 化一化式子: f(x)表示x的质因子分解中的最大幂指数 $ ...
- BZOJ 3561 DZY Loves Math VI
BZOJ 3561 DZY Loves Math VI 求\(\sum_{i=1}^{n}\sum_{j=1}^{m}\text{lcm}(i,j)^{\gcd(i,j)}\),钦定\(n\leq m ...
- BZOJ 3309: DZY Loves Math
3309: DZY Loves Math Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 761 Solved: 401[Submit][Status ...
- BZOJ 3512: DZY Loves Math IV [杜教筛]
3512: DZY Loves Math IV 题意:求\(\sum_{i=1}^n \sum_{j=1}^m \varphi(ij)\),\(n \le 10^5, m \le 10^9\) n较小 ...
- bzoj 3309 DZY Loves Math 莫比乌斯反演
DZY Loves Math Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 1303 Solved: 819[Submit][Status][Dis ...
- BZOJ3462 DZY Loves Math II 【多重背包 + 组合数】
题目 输入格式 第一行,两个正整数 S 和 q,q 表示询问数量. 接下来 q 行,每行一个正整数 n. 输出格式 输出共 q 行,分别为每个询问的答案. 输入样例 30 3 9 29 1000000 ...
- BZOJ3462 DZY Loves Math II(动态规划+组合数学)
容易发现这是一个有各种玄妙性质的完全背包计数. 对于每个质数,将其选取个数写成ax+b的形式,其中x=S/pi,0<b<x.那么可以枚举b的部分提供了多少贡献,多重背包计算,a的部分直接组 ...
- DZY Loves Math II:多重背包dp+组合数
Description Input 第一行,两个正整数 S 和 q,q 表示询问数量.接下来 q 行,每行一个正整数 n. Output 输出共 q 行,分别为每个询问的答案. Sample Inpu ...
随机推荐
- sqlldr将txt导入oracle数据库
注意事项: 1.userid 和 control关键字不要缺少: 2.注意数据库格式:test/test@数据库IP:1521/Oracle8,最后一个是tnsnames中的service_name, ...
- 织梦dedecms出现系统基本参数空白或显示Call to undefined function make_hash()
织梦dedecms出现系统基本参数空白或显示Call to undefined function make_hash() 最新的织梦版本(2018-01-09)修改了include文件夹中的commo ...
- shell脚本,awk结合正则来打印文件里面的内容。
文件内容如下:key1abc d key2 1.想得到如下结果: abc d 2.想得到如下结果: key1key2
- react安装极其了解
全局安装react脚手架工具 首先全局进行安装:cnpm install create-react-app -g 查看是否安装完成:create-react-app 创建react项目:create- ...
- mysql 删除 一天前 创建 的数据,计算时间差
DELETE from table_name WHERE TIMESTAMPDIFF(SECOND ,CREATE_TIME,now() ) > 24*60*60 https://www.cnb ...
- Linux监控一之Nagios的安装与配置
一.Nagios简介 Nagios是一款开源的电脑系统和网络监视工具,能有效监控Windows.Linux和Unix的主机状态,交换机路由器等网络设置,打印机等.在系统或服务状态异常时发出邮件或短信报 ...
- 利用Filter解决跨域请求的问题
1.为什么出现跨域. 很简单的一句解释,A系统中使用ajax调用B系统中的接口,此时就是一个典型的跨域问题,此时浏览器会出现以下错误信息,此处使用的是chrome浏览器. 错误信息如下: jquery ...
- CentOS6.5生产环境系统安装
CentOS 6.5系统安装 1-1 将预先准备的CentOS 6.5安装光盘插入光驱中,开机/重启系统时,系统会进行自检,自检完毕就会出现安装系统时的引导界面,如图1-1所示.1-2 使用键盘方向键 ...
- C语言用一维数组打印杨辉三角(原:无意中想到)
本贴地址 ] = { }; a[] = , a[] = ; int i, j,m; ; i <= ; i++) //2-11 输出10行 { ; j > ; j--) //关键在这句,倒着 ...
- HDU 5739 Fantasia 双连通分量 树形DP
题意: 给出一个无向图,每个顶点有一个权值\(w\),一个连通分量的权值为各个顶点的权值的乘积,一个图的权值为所有连通分量权值之和. 设删除顶点\(i\)后的图\(G_i\)的权值为\(z_i\),求 ...