题目描述:

分析:

我也不知道我在干sm,但就是没写出来2333

枚举 i 的每个质因子 j ,复杂度为n^(3/2)

为什么我会认为是n^2啊2333

然后考虑 f ( j )对g ( i )做了多少贡献

这个值当然与x=i / j有关

对每个x的质因子分开考虑

那么设某个因子P的指数为A

那么对于中途sigma的某一位的值Ik,他们的因子P的指数为Ak

那么为了满足整除性,我们知道Ak是单调不上升的

那么就可以用组合数算了。。。

构造长度为K的不超过Ak的不下降序列的方案数相当于将Ak个有标号小球放入K个编了号的箱子中,箱子可空

差分一下就看出来了2333

那么方案数就为C(K+Ak-1,Ak)

对于x的总方案,就是所有质因子方案数相乘,我们设为W(x)

所以g ( i ) = sigma( j | i ) f ( j ) * W ( i / j )

其中W是可以O( n^(3/2) )预处理的

所以总复杂度为O( n^(3/2) )

此外题解说有一个神仙卷积法,考场上想过但是为什么不继续想啊

太菜了,复习复习。。。

( f * g )(n) = sigma ( j | i ) f ( j ) *g ( i / j )

我***考试中这式子都写在纸上了怎么还不会啊2333好菜啊2333

答案就是( f * I ) (n) ^ k,其中函数I中所有值都为1

快速卷卷起来不就好啦。。。

/*龙门粗口*/

#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<queue>
#include<vector> #define maxn 200005
#define INF 0x3f3f3f3f
#define MOD 1000000007 using namespace std; inline int getint()
{
int num=,flag=;char c;
while((c=getchar())<''||c>'')if(c=='-')flag=-;
while(c>=''&&c<='')num=num*+c-,c=getchar();
return num*flag;
} int n,K;
long long f[maxn];
long long g[maxn];
int pri[maxn],cnt,np[maxn];
long long fac[maxn],inv[maxn];
long long W[maxn]; inline long long C(int p,int q)
{return fac[p]*inv[q]%MOD*inv[p-q]%MOD;} inline void init()
{
for(int i=;i<maxn/;i++)
{
if(!np[i])pri[++cnt]=i;
for(int j=;j<=cnt&&i*pri[j]<maxn/;j++)
{
np[i*pri[j]]=;
if(i%pri[j]==)break;
}
}
fac[]=fac[]=inv[]=inv[]=;
for(int i=;i<maxn;i++)fac[i]=fac[i-]*i%MOD;
for(int i=;i<maxn;i++)inv[i]=inv[MOD%i]*(MOD-MOD/i)%MOD;
for(int i=;i<maxn;i++)inv[i]=inv[i]*inv[i-]%MOD;
} int main()
{
int T=getint();
init();
while(T--)
{
memset(g,,sizeof g);
n=getint(),K=getint();
for(int i=;i<=n;i++)
{
int tmp=i;W[i]=;
for(int j=;j<=cnt&&pri[j]<=tmp;j++)
if(tmp%pri[j]==)
{
int cur=;
while(tmp%pri[j]==)tmp/=pri[j],cur++;
(W[i]*=C(K+cur-,cur))%=MOD;
}
if(tmp>)(W[i]*=K)%=MOD;
}
for(int i=;i<=n;i++)f[i]=getint();
for(int i=;i<=n;i++)for(int j=;j*j<=i;j++)
if(i%j==)
{
(g[i]+=f[j]*W[i/j])%=MOD;
if(j*j!=i)(g[i]+=f[i/j]*W[j])%=MOD;
}
for(int i=;i<=n;i++)printf("%lld%c",g[i],i==n?'\n':' ');
}
}

20191217HNOI 模拟赛 复活石的更多相关文章

  1. FJoi2017 1月20日模拟赛 恐狼后卫(口糊动规)

    Problem 1 恐狼后卫(wolf.cpp/c/pas) [题目描述] 著名卡牌游戏<石炉传说>中有一张随从牌:恐狼后卫.恐狼后卫的能力是使得相邻随从的攻击力提高. 现在有n张恐狼后卫 ...

  2. 20180610模拟赛T1——脱离地牢

    Description 在一个神秘的国度里,年轻的王子Paris与美丽的公主Helen在一起过着幸福的生活.他们都随身带有一块带磁性的阴阳魔法石,身居地狱的魔王Satan早就想着得到这两块石头了,只要 ...

  3. 冲刺$\mathfrak{CSP-S}$集训模拟赛总结

    开坑.手懒并不想继续一场考试一篇文. 既没必要也没时间侧边栏的最新随笔题解反思相间也丑 而且最近越来越懒了竟然都不写题解了……开坑也是为了督促自己写题解. 并不想长篇大论.简要题解也得写啊QAQ. 目 ...

  4. NOIP模拟赛20161022

    NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...

  5. NOI模拟赛 Day1

    [考完试不想说话系列] 他们都会做呢QAQ 我毛线也不会呢QAQ 悲伤ING 考试问题: 1.感觉不是很清醒,有点困╯﹏╰ 2.为啥总不按照计划来!!! 3.脑洞在哪里 4.把模拟赛当作真正的比赛,紧 ...

  6. NOIP第7场模拟赛题解

    NOIP模拟赛第7场题解: 题解见:http://www.cqoi.net:2012/JudgeOnline/problemset.php?page=13 题号为2221-2224. 1.car 边界 ...

  7. contesthunter暑假NOIP模拟赛第一场题解

    contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...

  8. NOIP模拟赛 by hzwer

    2015年10月04日NOIP模拟赛 by hzwer    (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...

  9. 小奇模拟赛9.13 by hzwer

    2015年9月13日NOIP模拟赛 by hzwer    (这是小奇=> 小奇挖矿(explo) [题目背景] 小奇要开采一些矿物,它驾驶着一台带有钻头(初始能力值w)的飞船,按既定路线依次飞 ...

随机推荐

  1. ZR9.8普转提

    ZR9.8普转提 A,B 打过的CF原题,不管了 C 确认过眼神,是我不会写的DP, 发现这个题目要求的过程类似与一个所有括号都不一样的括号匹配的过程 但是限制条件非常多,有点无从下手的感觉 我们设\ ...

  2. 2019-8-31-dotnet-core-隐藏控制台

    title author date CreateTime categories dotnet core 隐藏控制台 lindexi 2019-08-31 16:55:58 +0800 2019-2-1 ...

  3. PowerShell 拿到最近的10个系统日志

    我最近发现我的程序总是调用一些不清真的代码,于是在运行的时候就退出了,我想要拿到系统的日志知道我的程序是怎么退出的,我如何通过 PowerShell 拿到最近的10个系统日志.为什么需要拿到最新10个 ...

  4. c#中索引器

    https://zhidao.baidu.com/question/59675980.html 不是必要的..相当于数学中的一个函数

  5. mysql find_in_set 与 in 的用法与区别,mysql范围搜索,mysql范围查询

    mysql find_in_set 与 in 的用法与区别 1.find_in_set 用于模糊查询,并且数据库中的值是用英文逗号分隔的: 例如: (1).去字段中查询 select find_in_ ...

  6. spring MVC 核心配置

    <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.spr ...

  7. C++学习——输入输出及头文件

    C++学习 ——输入输出及头文件 一.输入输出 (1)cin与cout C++中也可以用printf与scanf,但是相对于这个,cin与cout更加方便一点.让我们先来看一段代码. 运行结果: 这里 ...

  8. 程序员必须掌握的性能调优 X Y Z

    热评博文:<如何设计出优美的Web API?>,现阅读量超 2500,小伙伴们不要错过哦! 2003 ~ 2008 年,这五年老兵哥我在通信行业做实习生和开发岗,主要用 C / C++ / ...

  9. Java面试思路

    一.javaSE基础 1.java IO流 2.java NIO 3.java集合 4.java注解 5.java泛型 6.java反射 7.java多线程 8.常用String.数组.日期操作 二. ...

  10. [梁山好汉说IT] 以水浒传为例讲解贝叶斯定理

    0x00 摘要 看看呼延灼如何利用贝叶斯定理来判断 "自己是否是公明哥哥的心腹". 0x01 IT概念 1. 贝叶斯定理 贝叶斯定理是用来解决"逆概率"问题的, ...