[luogu5438]记忆
令$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]记忆的更多相关文章
- vim(vi)常用操作及记忆方法
vi(vim)可以说是linux中用得最多的工具了,不管你配置服务也好,写脚本也好,总会用到它.但是,vim作为一个“纯字符”模式下的工具,它的操作和WINDOWS中的文本编辑工具相比多少有些复杂.这 ...
- Java基础加强之集合篇(模块记忆、精要分析)
千里之行,始于足下.把别人的变成自己,再把自己的分享给别人,这也是一次提升的过程.本文的目的是以一篇文章从整体把握集合体系又不失一些细节上的实现,高手路过. 集合的作用与特点 Java是一门面向对象语 ...
- 【验证】C# dataSource 的记忆功能
做项目时遇到的问题:dataSource被ComboBox引用过一次,会记忆最后一次选中的值,然后下一次再用时这个值会直接呈现在ComboBox中. 为验证是dataSource还是ComboBox自 ...
- 挣值管理(PV、EV、AC、SV、CV、SPI、CPI) 记忆
挣值管理法中的PV.EV.AC.SV.CV.SPI.CPI这些英文简写相信把大家都搞得晕头转向的.在挣值管理法中,需要记忆理解的有三个参数:PV.AC.EV. PV:计划值,在即定时间点前计划 ...
- *HDU1142 最短路+记忆化dfs
A Walk Through the Forest Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Jav ...
- Cocos2dx3.11.1Android播放视频,后台 黑屏,无法记忆播放bug修改
/* * Copyright (C) 2006 The Android Open Source Project * Copyright (c) 2014 Chukong Technologies In ...
- Android狂记忆
虽然说技术人员偏爱实战,而不屑理论或记忆,但实战之前,若是记忆一些知识,开发起来将会如虎添翼,不说了,开始狂记吧! Android 系统包说明: android.app :提供高层的程序模型.提供基 ...
- 关于javascript对象的简单记忆法
关于javascript对象方法的简单记忆法(个人整理) string对象: 大号小号闪烁加链接./big/small/blink/link/ 粗体斜体打字删除线./bold/italics/fixe ...
- [ACM_动态规划] 数字三角形(数塔)_递推_记忆化搜索
1.直接用递归函数计算状态转移方程,效率十分低下,可以考虑用递推方法,其实就是“正着推导,逆着计算” #include<iostream> #include<algorithm> ...
随机推荐
- JVM堆内存泄露分析
一.背景 公司有一个中间的系统A可以对接多个后端业务系统B,一个业务系统以一个Namespace代表, Namespace中包含多个FrameChannel(用holder保存),表示A连接到业务 ...
- C++核心编程 1 程序的内存模型
1.内存分区模型 C++程序在执行时,将内存大方向划分为4个区域 代码区:存放函数体的二进制代码,由操作系统进行管理(写的所有代码都在代码区) 全局区:存放全局变量.静态变量以及常量 栈 区:由编 ...
- harmony OS 开发工具安装
harmony OS 开发工具安装 安装流程 安装完成 初始配置 双击打开 Running DevEco Studio requires the npm configuration informati ...
- VS 调试 提示 Lc.exe已退出 代码为-1问题解决方法
找到程序项目下Properties文件夹licenses.licx文件,然后右键选择删除就可以了,调试运行正常了 https://jingyan.baidu.com/article/b24f6c822 ...
- RabbitMQ的消息可靠性(五)
一.可靠性问题分析 消息的可靠性投递是使用消息中间件不可避免的问题,不管是使用哪种MQ都存在这种问题,接下来要说的就是在RabbitMQ中如何解决可靠性问题:在前面 在前面说过消息的传递过程中有三个对 ...
- silky微服务快速开始
项目介绍 Silky框架旨在帮助开发者在.net平台下,通过简单代码和配置快速构建一个微服务开发框架. Silky 通过 .net core的主机来托管微服务应用.通过 Asp.Net Core 提供 ...
- 【原创】Linux v4l2框架分析
背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本: ...
- java中生成和验证jwt
在这篇文章中主要记录一下在Java中如何使用 java 代码生成jwt token,主要是使用jjwt来生成和验证jwt,关于什么是JWT,以及JWT可以干什么不做详解. jwt的格式: base64 ...
- 2021.10.26考试总结[冲刺NOIP模拟16]
T1 树上的数 \(DFS\)一遍.结构体存边好像更快? \(code:\) T1 #include<bits/stdc++.h> using namespace std; namespa ...
- TVS管性能及选型总结
https://wenku.baidu.com/view/5b5bda5526fff705cc170af8.html