直接筛$\mu$?+爆算?再不行筛素数再筛个数?但不就是$\mu^2$的前缀和吗?

放。。。怕不是数论白学了$qwq$


思路:二分+容斥

提交:两次(康了题解)

题解:

首先答案满足二分性质(递增),然后就是如何快速$ck()$

首先观察到,$\lfloor \frac{n}{i^2} \rfloor$是$i^2$筛出来的完全平方数(和其倍数)的个数,但是显然这么筛会筛重一些数。

于是:容斥叭$qwq$

考虑如何配系数:所有数-被一个素因子的平方筛掉的+被两个素因子的平方筛掉的-被三个素因子的平方筛掉的+。。。

奇负偶正?

这不是$\mu$吗?

好的,筛出$\mu$,$sqrt(2*k)$(然鹅我也不知道为什么$2*k$是上界)的;然后二分答案。

$O(T*logn*\sqrt{n})$

  1. #include<cstdio>
  2. #include<iostream>
  3. #include<cmath>
  4. using namespace std;
  5. #define ull unsigned long long
  6. #define ll long long
  7. #define R register ll
  8. #define pause (for(R i=1;i<=10000000000;++i))
  9. #define In freopen("NOIPAK++.in","r",stdin)
  10. #define Out freopen("out.out","w",stdout)
  11. namespace Fread {
  12. static char B[<<],*S=B,*D=B;
  13. #ifndef JACK
  14. #define getchar() (S==D&&(D=(S=B)+fread(B,1,1<<15,stdin),S==D)?EOF:*S++)
  15. #endif
  16. inline int g() {
  17. R ret=,fix=; register char ch; while(!isdigit(ch=getchar())) fix=ch=='-'?-:fix;
  18. if(ch==EOF) return EOF; do ret=ret*+(ch^); while(isdigit(ch=getchar())); return ret*fix;
  19. } inline bool isempty(const char& ch) {return (ch<=||ch>=);}
  20. inline void gs(char* s) {
  21. register char ch; while(isempty(ch=getchar()));
  22. do *s++=ch; while(!isempty(ch=getchar()));
  23. }
  24. } using Fread::g; using Fread::gs;
  25.  
  26. namespace Luitaryi {
  27. const int N=;
  28. int mu[N],pri[N/],cnt,T,k;
  29. bool vis[N];
  30. inline void PRE() { mu[]=;
  31. for(R i=;i<=N-;++i) {
  32. if(!vis[i]) pri[++cnt]=i,mu[i]=-;
  33. for(R j=;j<=cnt&&i*pri[j]<=N-;++j) {
  34. vis[i*pri[j]]=true;
  35. if(i%pri[j]==) break;
  36. mu[i*pri[j]]=-mu[i];
  37. }
  38. }
  39. }
  40. inline bool ck(int x) { R ret=;
  41. for(R i=,lim=sqrt(x);i<=lim;++i) ret+=mu[i]*(x/(i*i));
  42. return ret>=k;
  43. }
  44. inline void main() { PRE();
  45. T=g(); while(T--) {
  46. k=g();
  47. R l=,r=k<<;
  48. while(l<r) {
  49. R md=l+r>>;
  50. if(ck(md)) r=md;
  51. else l=md+;
  52. } printf("%lld\n",l);
  53. }
  54. }
  55. }
  56. signed main() {
  57. Luitaryi::main();
  58. }

2019.07.17

BZOJ 2440 [中山市选2011]完全平方数 二分+容斥的更多相关文章

  1. BZOJ 2440 [中山市选2011]完全平方数 (二分 + 莫比乌斯函数)

    2440: [中山市选2011]完全平方数 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 4805  Solved: 2325[Submit][Sta ...

  2. BZOJ 2440: [中山市选2011]完全平方数( 二分答案 + 容斥原理 + 莫比乌斯函数 )

    先二分答案m,<=m的有m-∑(m/pi*pi)+∑(m/pi*pi*pj*pj)-……个符合题意的(容斥原理), 容斥系数就是莫比乌斯函数μ(预处理)... ----------------- ...

  3. BZOJ 2440 [中山市选2011]完全平方数 | 莫比乌斯函数

    BZOJ 2440 [中山市选2011]完全平方数 | 莫比乌斯函数 题面 找出第k个不是平方数的倍数的数(1不是平方数, \(k \le 10^9\)). 题解 首先二分答案,问题就转化成了求\([ ...

  4. Bzoj 2440: [中山市选2011]完全平方数(莫比乌斯函数+容斥原理+二分答案)

    2440: [中山市选2011]完全平方数 Time Limit: 10 Sec Memory Limit: 128 MB Description 小 X 自幼就很喜欢数.但奇怪的是,他十分讨厌完全平 ...

  5. BZOJ 2440: [中山市选2011]完全平方数 [容斥原理 莫比乌斯函数]

    2440: [中山市选2011]完全平方数 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 3028  Solved: 1460[Submit][Sta ...

  6. [BZOJ 2440] [中山市选2011] 完全平方数 【二分 + 莫比乌斯函数】

    题目链接:BZOJ - 2440 题目分析 首先,通过打表之类的方法可以知道,答案不会超过 2 * k . 那么我们使用二分,对于一个二分的值 x ,求出 [1, x] 之间的可以送出的数有多少个. ...

  7. BZOJ.2440.[中山市选2011]完全平方数(莫比乌斯函数 二分)

    题目链接 总感觉博客园的\(Markdown\)很..\(gouzhi\),可以看这的. 题意即求第\(k\)个无平方因子数. 无平方因子数(Square-Free Number),即分解之后所有质因 ...

  8. bzoj 2440: [中山市选2011]完全平方数【莫比乌斯函数+二分】

    二分答案,然后用莫比乌斯函数作为容斥系数,计算当前枚举的mid内有几个满足要求的数 #include<iostream> #include<cstdio> #include&l ...

  9. BZOJ 2440 [中山市选2011]完全平方数 ——莫比乌斯函数

    $\sum_{i=1}^n[i==d^2*p]$ 其中p无平方因子$=\sum_{d^2\mid n,d>=2}\sum_{i=1}^{\lfloor {n/d^2} \rfloor} \lef ...

随机推荐

  1. Python 命名规范总结

    Python推荐命名规范: 模块名和包名采用小写字母并且以下划线分隔单词的形式: 如:browser_driver 类名或异常名采用每个单词首字母大写的方式: 如:BasePage, Keyboard ...

  2. mysql中比较实用的几个函数

    1.曾有这样的需求: 可以使用如下函数: 语法:FIND_IN_SET(str,strlist). 定义: 1. 假如字符串str在由N子链组成的字符串列表strlist中,则返回值的范围在1到N之间 ...

  3. base64转码java版

    package com.net.util; import java.io.FileInputStream; import java.io.FileOutputStream; import java.i ...

  4. 数据结构:BF算法

    贴上源代码: #include<iostream> using namespace std; int BF(char S[],char T[]) { int i,j; i = j = 0; ...

  5. S03_CH02_AXI_DMA PL发送数据到PS

    S03_CH02_AXI_DMA PL发送数据到PS 1.1概述 本课程的设计原理分析. 本课程循序渐进,承接<S03_CH01_AXI_DMA_LOOP 环路测试>这一课程,在DATA ...

  6. S02_CH02_MIO实验Enter a post title

    S02_CH02_MIO实验 2.1 GPIO简介 Zynq7000系列芯片有54个MIO(multiuse I/O),它们分配在 GPIO 的Bank0 和Bank1隶属于PS部分,这些IO与PS直 ...

  7. 使用 FTP 迁移 SQL Server 数据_迁移数据_快速入门(SQL Server)_云数据库 RDS 版-阿里云

    背景信息 阿里云数据库 SQL Server 版导入数据有如下限制: 仅支持导入 SQL Server 2005.SQL Server 2008.SQL Server 2008R2 版本数据 仅支持全 ...

  8. 【ES6 】ES6 字符串扩展及新增方法

    模板字符串 传统写法 var str = 'There are <b>' + basket.count + '</b> ' + 'items in your basket, ' ...

  9. django inclusion用法

    概述: inclusion主要的是生成html标签, 返回的是一个字典,大分部跟simple_tag类似, simple_tag可返回任意类型的值 定义inclusion from django im ...

  10. 随机模块 random 函数的调用

    随机模块 random 作用: 用于模拟或生成随机输出的模块. 用法示意: import random as R 函数名 描述 R.random() 返回一个[0, 1) 之间的随机实数 R.unif ...