20191217HNOI 模拟赛 复活石
题目描述:



分析:
我也不知道我在干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 模拟赛 复活石的更多相关文章
- FJoi2017 1月20日模拟赛 恐狼后卫(口糊动规)
Problem 1 恐狼后卫(wolf.cpp/c/pas) [题目描述] 著名卡牌游戏<石炉传说>中有一张随从牌:恐狼后卫.恐狼后卫的能力是使得相邻随从的攻击力提高. 现在有n张恐狼后卫 ...
- 20180610模拟赛T1——脱离地牢
Description 在一个神秘的国度里,年轻的王子Paris与美丽的公主Helen在一起过着幸福的生活.他们都随身带有一块带磁性的阴阳魔法石,身居地狱的魔王Satan早就想着得到这两块石头了,只要 ...
- 冲刺$\mathfrak{CSP-S}$集训模拟赛总结
开坑.手懒并不想继续一场考试一篇文. 既没必要也没时间侧边栏的最新随笔题解反思相间也丑 而且最近越来越懒了竟然都不写题解了……开坑也是为了督促自己写题解. 并不想长篇大论.简要题解也得写啊QAQ. 目 ...
- NOIP模拟赛20161022
NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...
- NOI模拟赛 Day1
[考完试不想说话系列] 他们都会做呢QAQ 我毛线也不会呢QAQ 悲伤ING 考试问题: 1.感觉不是很清醒,有点困╯﹏╰ 2.为啥总不按照计划来!!! 3.脑洞在哪里 4.把模拟赛当作真正的比赛,紧 ...
- NOIP第7场模拟赛题解
NOIP模拟赛第7场题解: 题解见:http://www.cqoi.net:2012/JudgeOnline/problemset.php?page=13 题号为2221-2224. 1.car 边界 ...
- contesthunter暑假NOIP模拟赛第一场题解
contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...
- NOIP模拟赛 by hzwer
2015年10月04日NOIP模拟赛 by hzwer (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...
- 小奇模拟赛9.13 by hzwer
2015年9月13日NOIP模拟赛 by hzwer (这是小奇=> 小奇挖矿(explo) [题目背景] 小奇要开采一些矿物,它驾驶着一台带有钻头(初始能力值w)的飞船,按既定路线依次飞 ...
随机推荐
- vue-learning:8-template-v-on-and-modifier
绑定元素事件的指令 v-on 及事件和修饰符 目录 对比原生事件绑定.jQuery事件绑定 Vue事件绑定 Vue绑定事件中获取事件对象event 事件修饰符 事件行为修饰符: stop / prev ...
- apply call 用法
1.对象转数组 tips 先看怎么用 再研究方法原理 var obj = { 0: 'qian', 1: 'long', 2: 'chu', 3: 'tian', ...
- CodeForces - 922D Robot Vacuum Cleaner (贪心)
Pushok the dog has been chasing Imp for a few hours already. Fortunately, Imp knows that Pushok is a ...
- presto,dremio,spark-sql与ranger的整合记录
dremio,spark-sql,presto和ranger的整合 当前,ranger没有现成的插件来管理dremio,spark-sql,presto. 暂时使用的方法是新建一个用户,如presto ...
- 僵进程与SIGCHLD信号
参考: https://www.cnblogs.com/webor2006/p/4014586.html wait()和waitpid()的参数解析:https://blog.csdn.net/csd ...
- 掌握这些,ArrayList就不用担心了!
关于ArrayList的学习 ArrayList属于Java基础知识,面试中会经常问到,所以作为一个Java从业者,它是你不得不掌握的一个知识点.
- JDBC 详解笔记
# JDBC ## 1:What? 通过Java代码来操作数据库的. 数据库的种类很多,导致不同的数据库的操作方式是不同. 通过JDBC的标准完成.通过java语言完成对于数据库的CRUD. ## 2 ...
- 预告:Windows 7 + Tiny Linux 4.19 + XFS + Vmware Workstation 15 (PRO)下篇dockerの奥义
困 困 等明天再写吧 主题将围绕在Vmware使用持久化XFS disk后machine rm default后不丢失images containers volumes etc.的奇观 并将展开部署c ...
- 洛谷P1020 导弹拦截 题解 LIS扩展题 Dilworth定理
题目链接:https://www.luogu.com.cn/problem/P1020 题目大意: 给你一串数,求: 这串数的最长不上升子序列的长度: 最少划分成多少个子序列是的这些子序列都是不上升子 ...
- Python 超级玛丽代码实现:人物行走和碰撞检测
功能介绍 人物行走 人物的行走速度这边分成水平方向(X轴)和竖直方向(Y轴),水平方向的速度要考虑加速度和摩擦力,竖直方向的速度要考虑重力加速度. 水平方向:设定X轴向右走的速度为大于0,向左走的速度 ...