题目大意

有\(n\)(\(n\leq 10^9\))个数:\(1,2,...,n\),每次操作是随机取一个没被删除的数\(x\),并删去\(x,x^2,x^3,...\)。

求期望几次删完所有数。

题解

可以把问题转换成:有\(n\)个数,每次操作随机取一个数\(x\),若\(x\)未被标记则标记\(x,x^2,x^3,...\)并删去\(x\),反之则删去\(x\),求期望删多少个未被标记的数。

发现一个数\(x\)被计入答案的充要条件是\(\forall y\in\{1,2,3,...,n\}\)满足\(\exists k,y^k=x\),删除序列中\(y\)在\(x\)之后。

记\(y\)的个数为\(p\),问题变成有\(p+1\)个数的排列,指定的数在第一个的概率。这个问题的答案是\(\frac{1}{p+1}\)。

也就是说,设\(p_i\)表示当\(x=i\)时\(y\)的个数,那么原问题的答案是\(\sum\limits_{i=1}^n \frac{1}{p_i+1}\)。

这个式子看上去只能\(\Theta(n)\)地求。

发现\([2,n]\)中有\(\lfloor \sqrt n \rfloor-1\)个平方数,三次根号\(n\)下取整减1个立方数……,\(p_i\neq 0\)的数的个数很少,这些数可以暴力求。

\(p_i=0\)的数的\(\frac{1}{p_i+1}=1\),可以直接求。

代码

#include<algorithm>
#include<cmath>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<ctime>
#include<iomanip>
#include<iostream>
#include<map>
#include<queue>
#include<set>
#include<stack>
#include<vector>
#define rep(i,x,y) for(register int i=(x);i<=(y);++i)
#define dwn(i,x,y) for(register int i=(x);i>=(y);--i)
#define view(u,k) for(int k=fir[u];~k;k=nxt[k])
#define LL long long
#define maxn 1000007
using namespace std;
int read()
{
int x=0,f=1;char ch=getchar();
while(!isdigit(ch)&&ch!='-')ch=getchar();
if(ch=='-')f=-1,ch=getchar();
while(isdigit(ch))x=(x<<1)+(x<<3)+ch-'0',ch=getchar();
return x*f;
}
void write(int x)
{
if(x==0){putchar('0'),putchar('\n');return;}
int f=0;char ch[20];
if(x<0)putchar('-'),x=-x;
while(x)ch[++f]=x%10+'0',x/=10;
while(f)putchar(ch[f--]);
putchar('\n');
return;
}
int n,t,mx=1e9,pos[maxn],cnt;
map<int,int>mp;
LL mul(LL x,int y){LL res=1;while(y){if(y&1)res*=x;x*=x,y>>=1;}return res;}
int main()
{
rep(i,2,30)
{
LL now=mul(2,i);int j;
for(j=2;now<=mx;)
{
mp[now]++;
if(mp[now]==1)pos[++cnt]=now;
j++;now=mul(j,i);
}
}
t=read();
while(t--)
{
n=read();
double ans=0.0;int num=0;
rep(i,1,cnt)if(pos[i]<=n)num++,ans+=1.0/((double)(mp[pos[i]]+1));
ans+=(double)(n-num);
printf("%.8lf\n",ans);
}
return 0;
}

一些感想

伟大的ysf口胡的

并不对劲的P5589的更多相关文章

  1. 并不对劲的BJOI2019

    一些感想 现实并非游戏,并不支持反复刷关 猎人和防御工事一起被老山龙摧毁了: 猎人惨死雨中,结云村永无放晴之日: 猎人被狂龙病毒侵蚀,天空山上黑蚀龙泛滥. 好像这才是怪物猎人系列的真实结局呢 day ...

  2. 并不对劲的uoj276. [清华集训2016]汽水

    想要很对劲的讲解,请点击这里 题目大意 有一棵\(n\)(\(n\leq 50000\))个节点的树,有边权 求一条路径使该路径的边权平均值最接近给出的一个数\(k\) 输出边权平均值下取整的整数部分 ...

  3. 并不对劲的DFT

    FFT是一个很多人选择背诵全文的算法. #include<algorithm> #include<cmath> #include<complex> #include ...

  4. 并不对劲的字符串专题(三):Trie树

    据说这些并不对劲的内容是<信息学奥赛一本通提高篇>的配套练习. 并不会讲Trie树. 1.poj1056-> 模板题. 2.bzoj1212-> 设dp[i]表示T长度为i的前 ...

  5. 并不对劲的字符串专题(二):kmp

    据说这些并不对劲的内容是<信息学奥赛一本通提高篇>的配套练习. 先感叹一句<信息学奥赛一本通提高篇>上对kmp的解释和matrix67的博客相似度99%(还抄错了),莫非mat ...

  6. 并不对劲的bzoj1861: [Zjoi2006]Book 书架

    传送门-> 这题的正确做法是splay维护这摞书. 但是并不对劲的人选择了暴力(皮这一下很开心). #include<algorithm> #include<cmath> ...

  7. 并不对劲的bzoj3932: [CQOI2015]任务查询系统

    传送门-> 离线操作听上去很简单,遗憾的是它强制在线. 每个时刻可以看成可持久化线段树中的一个版本,而每一个版本的线段树维护的是值某一段区间且在这个版本对应的时刻出现的数之和. 会发现同一时刻可 ...

  8. 并不对劲的bzoj1853:[SCOI2010]幸运数字

    传送门-> 据说本题的正确读法是[shìng运数字]. 听上去本题很适合暴力,于是并不对劲的人就去写了.其实这题就是一个很普(有)通(趣)暴力+神奇的优化. 首先,会发现幸运数字很少,那么就先搜 ...

  9. 并不对劲的bzoj4199: [Noi2015]品酒大会

    传送门-> 又称普及大会. 这题没什么好说的……后缀自动机裸题……并不对劲的人太菜了,之前照着标程逐行比对才过了这道题,前几天刚刚把这题一遍写对…… 这题的输出和某两点相同后缀的长度有关,那么把 ...

随机推荐

  1. css background之设置图片为背景技巧

    原文 Background是什么意思,翻译过来有背景意思.同样在css里面作为css属性一成员同样是有背景意思,并且是设置背景图片.背景颜色.背景图片截取等样式. 首先先来看看background有那 ...

  2. DataSet转换为实体类

    /// <summary> /// DataSet转换为实体类 /// </summary> /// <typeparam name="T">实 ...

  3. 怎么让C#项目自动复制NuGet中的dll引用到输出目录?

    1.从vs中关闭项目 2.用记事本打开csproj文件 3.  在<PropertyGroup> 和 </PropertyGroup>之间添加一行: <CopyLocal ...

  4. PCB Layout初学者必会知识总结(转)

    PCB是印刷电路板(即Printed Circuit Board)的简称.印刷电路板是组装电子零件用的基板,是在通用基材上按预定设计形成点间连接及印制元件的印制板.该产品的主要功能是使各种电子零组件形 ...

  5. idea git操作 -- 已有项目添加到git

    我们在使用git时,如果是先从git克隆项目,然后配置项目运行没问题,如果将已有项目添加到git,则项目环境还是提交不了git,还需要到克隆的仓库文件夹打开项目去操作git,如果有有类型情况可按照如下 ...

  6. PCL点云库(Point Cloud Library)简介

    博客转载自:http://www.pclcn.org/study/shownews.php?lang=cn&id=29 什么是PCL PCL(Point Cloud Library)是在吸收了 ...

  7. 几句简单的python代码完成周公解梦功能

    <周公解梦>是靠人的梦来卜吉凶的一本于民间流传的解梦书籍,共有七类梦境的解述.这是非常传统的中国文化体系的一部分,但是如何用代码来获取并搜索周公解梦的数据呢?一般情况下,要通过爬虫获取数据 ...

  8. Android云端APP

    使用HbuilderX打包APP 首先创建一个 5+APP+使用MUI项目 <!DOCTYPE html> <html> <head> <meta chars ...

  9. Spring Boot 2.0 集成 Druid 数据源

    一.Maven项目依赖 <!-- 开发者工具(热部署 修改classpath下的文件springboot自动重启) --> <dependency> <groupId&g ...

  10. Vue开发工具

    vue微信小程序:mpvue 极客开发工具:Dcloud,uni-app 一套代码多终端. 简书-推荐的Vue UI库 Vue UI: 功能介绍帖子之一  :帖子二 VSCode: 介绍帖子 Vue- ...