令$f(x)=\frac{x}{\max_{k^{2}|x}k^{2}}$,最优解即将$f(l),f(l+1),...,f(r)$排序,那么每存在一种不同的数则答案减1,那么$x$出现当且仅当$f(x)=x$且存在$k$满足$l\le xk^{2}\le r$

枚举$k$,那么即求$(\lfloor\frac{l-1}{k^{2}}\rfloor,\lfloor\frac{r}{k^{2}}\rfloor]$中有多少个数最大平方因子为1,但同时还有重复,即区间右端点要对上一次左端点取min,之后拆成两个前缀和,即求$[1,n]$中$f(x)=x$的数个数

类似洛谷4318,容斥即$\sum_{i=1}^{\sqrt{n}}\mu(i)\lfloor\frac{n}{i^{2}}\rfloor$,再对$i$数论分块,对于$i\le n^{\frac{1}{3}}$,共$o(n^{\frac{1}{3}})$种;对于$i>n^{\frac{1}{3}}$,则有$\frac{n}{i^{2}}\le n^{\frac{1}{3}}$,同样共$o(n^{\frac{1}{3}})$种

再对外层$k$数论分块,对于较小的一部分直接线性筛求出$\mu$,对于较大的部分套用上面的做法,考虑复杂度:对于$k\le r^{x}$,复杂度为$r^{\frac{1}{3}}\int_{0}^{r^{x}}k^{-\frac{2}{3}}\ dk=o(r^{\frac{x+1}{3}})$;对于$k>r^{x}$,则有$\frac{r}{k^{2}}\le r^{1-2x}$,复杂度为$o(r^{1-2x})$

取$\frac{x+1}{3}=1-2x$,解得$x=\frac{2}{7}$,总复杂度为$o(r^\frac{3}{7})$,可以通过

 1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 10000005
4 #define ll long long
5 int p[N],vis[N],mu[N],s1[N],s2[N];
6 ll l,r,ans;
7 ll calc(ll n){
8 if (n<N-4)return s2[n];
9 ll ans=0;
10 for(ll i=1,j;i*i<=n;i=j+1){
11 j=(ll)sqrt(n/(n/(i*i)));
12 ans+=n/(i*i)*(s1[j]-s1[i-1]);
13 }
14 return ans;
15 }
16 int main(){
17 mu[1]=1;
18 for(int i=2;i<N-4;i++){
19 if (!vis[i]){
20 p[++p[0]]=i;
21 mu[i]=-1;
22 }
23 for(int j=1;(j<=p[0])&&(i*p[j]<N-4);j++){
24 vis[i*p[j]]=1;
25 if (i%p[j])mu[i*p[j]]=mu[i]*mu[p[j]];
26 else{
27 mu[i*p[j]]=0;
28 break;
29 }
30 }
31 }
32 for(int i=1;i<N-4;i++){
33 s1[i]=s1[i-1]+mu[i];
34 s2[i]=s2[i-1]+mu[i]*mu[i];
35 }
36 scanf("%lld%lld",&l,&r);
37 l--;
38 ans=r-l;
39 ll las=r;
40 for(ll i=1,j;i*i<=r;i=j+1){
41 if (i*i>l)j=(ll)sqrt(r/(r/(i*i)));
42 else j=(ll)sqrt(min(l/(l/(i*i)),r/(r/(i*i))));
43 ans-=calc(min(r/(i*i),las))-calc(l/(i*i));
44 las=l/(i*i);
45 }
46 printf("%lld",ans);
47 }

[luogu5438]记忆的更多相关文章

  1. vim(vi)常用操作及记忆方法

    vi(vim)可以说是linux中用得最多的工具了,不管你配置服务也好,写脚本也好,总会用到它.但是,vim作为一个“纯字符”模式下的工具,它的操作和WINDOWS中的文本编辑工具相比多少有些复杂.这 ...

  2. Java基础加强之集合篇(模块记忆、精要分析)

    千里之行,始于足下.把别人的变成自己,再把自己的分享给别人,这也是一次提升的过程.本文的目的是以一篇文章从整体把握集合体系又不失一些细节上的实现,高手路过. 集合的作用与特点 Java是一门面向对象语 ...

  3. 【验证】C# dataSource 的记忆功能

    做项目时遇到的问题:dataSource被ComboBox引用过一次,会记忆最后一次选中的值,然后下一次再用时这个值会直接呈现在ComboBox中. 为验证是dataSource还是ComboBox自 ...

  4. 挣值管理(PV、EV、AC、SV、CV、SPI、CPI) 记忆

    挣值管理法中的PV.EV.AC.SV.CV.SPI.CPI这些英文简写相信把大家都搞得晕头转向的.在挣值管理法中,需要记忆理解的有三个参数:PV.AC.EV.     PV:计划值,在即定时间点前计划 ...

  5. *HDU1142 最短路+记忆化dfs

    A Walk Through the Forest Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Jav ...

  6. Cocos2dx3.11.1Android播放视频,后台 黑屏,无法记忆播放bug修改

    /* * Copyright (C) 2006 The Android Open Source Project * Copyright (c) 2014 Chukong Technologies In ...

  7. Android狂记忆

    虽然说技术人员偏爱实战,而不屑理论或记忆,但实战之前,若是记忆一些知识,开发起来将会如虎添翼,不说了,开始狂记吧! Android 系统包说明: android.app  :提供高层的程序模型.提供基 ...

  8. 关于javascript对象的简单记忆法

    关于javascript对象方法的简单记忆法(个人整理) string对象: 大号小号闪烁加链接./big/small/blink/link/ 粗体斜体打字删除线./bold/italics/fixe ...

  9. [ACM_动态规划] 数字三角形(数塔)_递推_记忆化搜索

    1.直接用递归函数计算状态转移方程,效率十分低下,可以考虑用递推方法,其实就是“正着推导,逆着计算” #include<iostream> #include<algorithm> ...

随机推荐

  1. 从零入门 Serverless | SAE 的远程调试和云端联调

    作者 | 弈川 阿里巴巴云原生团队 导读:本节课程包含三部分内容,前两个部分简单介绍远程调试以及端云联调的原理,最后在 Serverless 应用引擎中进行实际演示. 经过之前课程的学习,相信大家对于 ...

  2. 一文学会Java事件机制

    本文同时发布于个人网站 https://ifuyao.com/blog/java-event/ 相信做 Java 开发的朋友,大多都是学习过或至少了解过 Java GUI 编程的,其中有大量的事件和控 ...

  3. k8s调度器介绍(调度框架版本)

    从一个pod的创建开始 由kubectl解析创建pod的yaml,发送创建pod请求到APIServer. APIServer首先做权限认证,然后检查信息并把数据存储到ETCD里,创建deployme ...

  4. 编程模仿MySql客服端

    写在前面 通过自己编写的Java代码程序,去模仿实现MySql客服端的简单功能,最终以控制台操作,很像在Dos窗口通过命令操作MySql数据库. 关键问题 在编写过程中遇到的一些小问题和一些值得留心注 ...

  5. css如何简单设置文字溢出盒子显示省略号

    1.单行文本溢出显示省略号单行文本溢出显示省略号,必须满足三个条件:(1)先强制一行内显示文本white-space:nowrap;(默认 normal自动换行)(2)超出的部分隐藏overflow: ...

  6. 【UE4 C++】Tick的三种方式、异步蓝图节点

    Tick的三种方式 包括 默认 Tick (Actor.Component.UMG) TimerManager 定时器 FTickableGameObject 可以写原生 Object 也可以继承UO ...

  7. Redis:学习笔记-02

    Redis:学习笔记-02 该部分内容,参考了 bilibili 上讲解 Redis 中,观看数最多的课程 Redis最新超详细版教程通俗易懂,来自 UP主 遇见狂神说 4. 事物 Redis 事务本 ...

  8. 实用小技巧:Notepad++直接连接Linux

    实用小技巧:Notepad++直接连接Linux 前言 号称编辑器之神的Vim对于只会用几个基础操作的本人而言,在编辑一些大型文本有那么些力不从心: 平时都是通过Xftp拖到本地,修改完后再覆盖回去: ...

  9. [Beta]the Agiles Scrum Meeting 7

    会议时间:2020.5.21 20:00 1.每个人的工作 今天已完成的工作 成员 已完成的工作 issue yjy 暂无 tq 新增功能:添加.选择.展示多个评测机,对新增功能进行测试 评测部分增加 ...

  10. 最短路spaf及dijkstra模板

    spaf的双端队列优化: #include<bits/stdc++.h> #define ll long long const ll maxn=210000; using namespac ...