洛谷 P4900 - 食堂(推式子)
首先推式子:
ans&=\sum\limits_{i=A}^B\sum\limits_{j=1}^i\{\dfrac{i}{j}\}
\end{aligned}
\]
考虑差分,设
\]
那么
\]
考虑如何计算 \(f(n)\):
f(n)&=\sum\limits_{i=1}^n\sum\limits_{j=1}^i\{\dfrac{i}{j}\}\\
&=\sum\limits_{i=1}^n\sum\limits_{j=1}^i\dfrac{i}{j}-\lfloor\dfrac{i}{j}\rfloor\\
&=\sum\limits_{i=1}^ni·\sum\limits_{j=1}^i\dfrac{1}{j}-\sum\limits_{i=1}^n\sum\limits_{j=1}^n\lfloor\dfrac{i}{j}\rfloor\\
\end{aligned}
\]
如果设 \(s_i=\sum\limits_{j=1}^i\dfrac{1}{j}\),那么减号前面的东西可写作 \(\sum\limits_{i=1}^ni·s_i\),一遍前缀和求出。下面着重考虑减号右边的东西:
\sum\limits_{i=1}^n\sum\limits_{j=1}^n\lfloor\dfrac{i}{j}\rfloor
\end{aligned}
\]
然后就是此题一个比较亮眼的地方了,考虑对 \(\lfloor\dfrac{i}{j}\rfloor\) 进行等价转化,不难发现 \(\lfloor\dfrac{i}{j}\rfloor=\sum\limits_{j\mid k}[k\le i]\),于是乎原式改写为:
\]
考虑每个 \(k\) 会对多少对 \((i,j)\) 产生贡献,显然符合条件的 \(i\) 的个数为 \((n+1-i)\),\(j\) 的个数为 \(d(k)\),其中 \(d\) 为约数个数和函数,那么上式可进一步写作:
\]
维护 \(d(k),k·d(k)\) 的前缀和即可快速计算上式。
如果您比较勤快使用线性筛求解 \(d\) 那么时间复杂度为 \(\mathcal O(n)\),而我比较懒所以直接调和级数枚举,复杂度 \(n\log n\)。
using namespace fastio;
const int MAXN=1e6;
int inv[MAXN+5],s[MAXN+5],ss[MAXN+5],d[MAXN+5],sd[MAXN+5],ssd[MAXN+5];
void init(){
for(int i=(inv[0]=inv[1]=1)+1;i<=MAXN;i++) inv[i]=1ll*inv[MOD%i]*(MOD-MOD/i)%MOD;
for(int i=1;i<=MAXN;i++) s[i]=(s[i-1]+inv[i])%MOD,ss[i]=(ss[i-1]+1ll*s[i]*i)%MOD;
for(int i=1;i<=MAXN;i++) for(int j=i;j<=MAXN;j+=i) d[j]++;
for(int i=1;i<=MAXN;i++) sd[i]=(sd[i-1]+d[i])%MOD,ssd[i]=(ssd[i-1]+1ll*i*d[i])%MOD;
}
int calc(int x){return (ss[x]-(1ll*(x+1)*sd[x]%MOD-ssd[x]+MOD)%MOD+MOD)%MOD;}
int main(){
init();int qu;read(qu);
while(qu--){
int l,r;read(l);read(r);
printf("%d\n",(calc(r)-calc(l-1)+MOD)%MOD);
}
return 0;
}
洛谷 P4900 - 食堂(推式子)的更多相关文章
- [洛谷P4900]食堂
题目大意:$n(n\leqslant10^6)$组询问,每组询问给出$l,r(l,r\leqslant10^6)$,求($\{\dfrac ij\}$表示$\dfrac ij$的小数部分): $$\s ...
- NOIP2000方格取数(洛谷,动态规划递推)
先上题目: P1004 方格取数 下面上ac代码: ///如果先走第一个再走第二个不可控因素太多 #include<bits/stdc++.h> #define ll long long ...
- P1541 乌龟棋 题解(洛谷,动态规划递推)
题目:P1541 乌龟棋 感谢大神的题解(他的写的特别好) 写一下我对他的代码的理解吧(哎,蒟蒻就这能这样...) 代码: #include<bits/stdc++.h> #define ...
- P1616 疯狂的采药(洛谷,动态规划递推,完全背包)
先上题目链接:P1616 疯狂的采药 然后放AC代码: #include<bits/stdc++.h> #define ll long long using namespace std; ...
- P1060 开心的金明(洛谷,动态规划递推,01背包轻微变形题)
题目链接:P1060 开心的金明 基本思路: 基本上和01背包原题一样,不同点在于这里要的是最大重要度*价格总和,我们之前原题是 f[j]=max(f[j],f[j-v[i]]+p[i]); 那么这里 ...
- P1048 采药(洛谷,动态规划递推,01背包原题)
题目直接放链接 P1048 采药 这题只是01背包+背景故事而已 原题来的 PS:我写了一篇很详细的01背包说明,如果下面ac代码有看不懂的地方可以去看看 对01背包的分析与理解(图文) 下面上ac代 ...
- 洛谷 P7360 -「JZOI-1」红包(Min-Max 容斥+推式子)
洛谷题面传送门 hot tea. 首先注意到这个 \(\text{lcm}\) 特别棘手,并且这里的 \(k\) 大得离谱,我们也没办法直接枚举每个质因子的贡献来计算答案.不过考虑到如果我们把这里的 ...
- 洛谷 P6031 - CF1278F Cards 加强版(推式子+递推)
洛谷题面传送门 u1s1 这个推式子其实挺套路的吧,可惜有一步没推出来看了题解 \[\begin{aligned} res&=\sum\limits_{i=0}^ni^k\dbinom{n}{ ...
- 洛谷 1447 [NOI2010]能量采集——容斥/推式子
题目:https://www.luogu.org/problemnew/show/P1447 1.容斥原理 求 f [ i ] 表示 gcd==i 的对数,先 f [ i ] = (n/i) * (m ...
随机推荐
- 【Spring】IoC容器 - Spring Bean作用域Scope(含SpringCloud中的RefreshScope )
前言 上一章学习了[依赖来源],本章主要讨论SpringBean的作用域,我们这里讨论的Bean的作用域,很大程度都是默认只讨论依赖来源为[Spring BeanDefinition]的作用域,因为在 ...
- 第6次 Beta Scrum Meeting
本次会议为Beta阶段第6次Scrum Meeting会议 会议概要 会议时间:2021年6月8日 会议地点:「腾讯会议」线上进行 会议时长:15min 会议内容简介:对完成工作进行阶段性汇报:对下一 ...
- [暴力题解&&考试反思] 双十一欢乐赛(联赛膜你测试32)
前言: 今天考试很迷糊.从7点考到11点半,我大概从7点睡到9点.隐隐约约看到旁边的狗哥敲了好几个题,我才开始写代码.然后因为还是很困,而且T1迷迷糊糊调了好长时间,T3T4的暴力就懒的写了... 估 ...
- 攻防世界 杂项 6.pure_color
图片隐写 工具 使用StegSolve一把梭 另一种解法 右击图片编辑,画图工具打开,属性设置黑白.
- 全志Tina_dolphin播放音视频裸流(h264,pcm)验证
最近在验证tina对裸流音视频的支持,主要指h264视频裸流及pcm音频裸流. 在原始sdk中有针对很多video和audio类型的parser,但就是没有找到pcm和h264的parser,所以需要 ...
- Openeuler安装完整man手册
Openeuler安装完整man手册 在 Debian 和 Ubuntu 中安装了Shell 前端软件包管理器apt(Advanced Packaging Tool),可以通过如下方式安装. ...
- 这一次,解决Flutter Dialog的各种痛点!
前言 Q:你一生中闻过最臭的东西,是什么? A:我那早已腐烂的梦. 兄弟萌!!!我又来了! 这次,我能自信的对大家说:我终于给大家带了一个,能真正帮助大家解决诸多坑比场景的pub包! 将之前的flut ...
- uni-app使用wx-canvas实现微信小程序上显示地图map和坐标geo
源码 <template> <view class="echart-box"> <canvas class="ec-canvas" ...
- IDEA免费激活至2099年教程,亲测可用
申明,本教程 Intellij IDEA 最新版激活教程,激活码均收集与网络,请勿商用,仅供个人学习使用,如有侵权,请联系作者删除.如条件允许,建议大家购买正版. 以下是本人免费激活到 2099 年的 ...
- Docker 18.03导入导出
docker中分容器和镜像,简单可以理解为容器是运行中的实例,镜像是运行实例所需的静态文件. 导入导出既可以对容器做操作,也可以对镜像做操作.区别在于镜像可以随时导出,容器必须要停止之后才可以导出,否 ...