当前位置: 首页 > wzjs >正文

怎样接做网站和软件的活长春网站建设方案优化

怎样接做网站和软件的活,长春网站建设方案优化,网站logo在线设计,用备忘录制作一个网站的制作引例 洛谷 P4213 【模板】杜教筛 题目描述 给定一个正整数,求 a n s 1 ∑ i 1 n φ ( i ) ans_1\sum_{i1}^n\varphi(i) ans1​i1∑n​φ(i) a n s 2 ∑ i 1 n μ ( i ) ans_2\sum_{i1}^n \mu(i) ans2​i1∑n​μ(i) 输入格式 本题单测试点内有多组数据。 输入的…

引例

洛谷 P4213 【模板】杜教筛

题目描述

给定一个正整数,求

a n s 1 = ∑ i = 1 n φ ( i ) ans_1=\sum_{i=1}^n\varphi(i) ans1=i=1nφ(i)

a n s 2 = ∑ i = 1 n μ ( i ) ans_2=\sum_{i=1}^n \mu(i) ans2=i=1nμ(i)

输入格式

本题单测试点内有多组数据

输入的第一行为一个整数,表示数据组数 T T T

接下来 T T T 行,每行一个整数 n n n,表示一组询问。

输出格式

对于每组询问,输出一行两个整数,分别代表 a n s 1 ans_1 ans1 a n s 2 ans_2 ans2

输入输出样例 #1

输入 #1

6
1
2
8
13
30
2333

输出 #1

1 1
2 0
22 -2
58 -3
278 -3
1655470 2

说明/提示

数据规模与约定

对于全部的测试点,保证 1 ≤ T ≤ 10 1 \leq T \leq 10 1T10 1 ≤ n < 2 31 1 \leq n \lt 2^{31} 1n<231。对于全部的测试点,保证 1 ≤ T ≤ 10 1 \leq T \leq 10 1T10 1 ≤ n < 2 31 1 \leq n \lt 2^{31} 1n<231

题中要求以低于线性的时间复杂度对数论函数求和。

原理

将例写为更一般的形式:

S ( n ) = ∑ i = 1 n f ( i ) S(n)=\sum_{i=1}^{n}f(i) S(n)=i=1nf(i) ,其中, f f f 是数论函数。

构造函数 g g g 并令 h = f ∗ g = g ∗ f h=f*g=g*f h=fg=gf
故,
∑ i = 1 n h ( i ) = ∑ i = 1 n ∑ d ∣ i g ( d ) f ( i d ) = ∑ d = 1 n ∑ d ∣ i n g ( d ) f ( i d ) = ∑ d = 1 n g ( d ) ∑ d ∣ i n f ( i d ) = ∑ d = 1 n g ( d ) ∑ i = 1 ⌊ n d ⌋ f ( i ) = ∑ d = 1 n g ( d ) S ( ⌊ n d ⌋ ) = g ( 1 ) S ( n ) + ∑ i = 2 n g ( i ) S ( ⌊ n i ⌋ ) \begin{aligned} \sum_{i=1}^nh(i) &= \sum_{i=1}^n\sum_{d|i}g(d)f\left(\frac{i}{d}\right) \\ &= \sum_{d=1}^n\sum_{d|i}^ng(d)f\left(\frac{i}{d}\right) \\ &= \sum_{d=1}^ng(d)\sum_{d|i}^nf\left(\frac{i}{d}\right) \\ &= \sum_{d=1}^ng(d)\sum_{i=1}^{\left\lfloor \frac{n}{d}\right\rfloor}f(i) \\ &= \sum_{d=1}^ng(d)S\left(\left\lfloor \frac{n}{d}\right\rfloor\right) \\ &= g(1)S(n)+\sum_{i=2}^ng(i)S\left(\left\lfloor \frac{n}{i}\right\rfloor\right) \end{aligned} i=1nh(i)=i=1ndig(d)f(di)=d=1nding(d)f(di)=d=1ng(d)dinf(di)=d=1ng(d)i=1dnf(i)=d=1ng(d)S(dn)=g(1)S(n)+i=2ng(i)S(in)
因此,
g ( 1 ) S ( n ) = ∑ i = 1 n h ( i ) − ∑ i = 2 n g ( i ) S ( ⌊ n / i ⌋ ) g(1)S(n)=\sum_{i=1}^nh(i)-\sum_{i=2}^ng(i)S(\lfloor n/i\rfloor) g(1)S(n)=i=1nh(i)i=2ng(i)S(⌊n/i⌋)

采用数论分快加速第二个求和运算,这要求:

  • 可以快速计算 ∑ i = 1 n h ( i ) \sum_{i=1}^nh(i) i=1nh(i)
  • 可以快速计算 ∑ i = l r g ( i ) \sum_{i=l}^rg(i) i=lrg(i)

实现

实现时构造出来的 h , g h,g h,g 已经满足了上述要求,采用记忆化搜索计算 S ( n ) S(n) S(n) ,数论分块加速求和。
考虑进一步优化,对于前 k k k 项使用线性筛直接计算。
以下为C++参考实现。

时间复杂度分析

此处伪证极多,点名《算法竞赛》中的“高阶小量”伪证。

先考虑有哪些 S ( i ) S(i) S(i) 会被计算。
设记搜时 S ( i ) S(i) S(i) 会使用 R ( i ) = { j ∣ j = ⌊ i k ⌋ , k ∈ N + , k > 1 } R(i)=\{j|j=\lfloor \frac ik \rfloor,k∈\mathbb{N^+},k>1\} R(i)={jj=ki,kN+,k>1} 中的元素的 S S S

下证若 m ∈ R ( n ) m∈R(n) mR(n) ,则 R ( m ) ⊆ R ( n ) R(m)\subseteq R(n) R(m)R(n)
对于任意 i ∈ R ( m ) i∈R(m) iR(m) , i = ⌊ m x ⌋ i=\lfloor \frac mx \rfloor i=xm
m = ⌊ n y ⌋ m=\lfloor \frac ny \rfloor m=yn
i = ⌊ ⌊ n y ⌋ x ⌋ = ⌊ n x y ⌋ ∈ R ( n ) i=\lfloor \frac {\lfloor \frac ny \rfloor}x \rfloor =\lfloor \frac n{xy} \rfloor ∈R(n) i=xyn=xynR(n)

由上知只有 i ∈ R ( n ) i∈R(n) iR(n) 才会被计算。

下令 T ( n ) T(n) T(n) 为计算 S ( n ) S(n) S(n) 的时间复杂度,并忽略计算 h , g h,g h,g 相关的消耗。则由数论分块相关可知 T ( n ) = n T(n)=\sqrt n T(n)=n

类似数论分块,若 i = ⌊ n x ⌋ ∈ R ( n ) i=\lfloor \frac nx \rfloor∈R(n) i=xnR(n)
i ≤ n i≤\sqrt n in 或 $ i=\lfloor \frac nj \rfloor,j<\sqrt n$ 。

对于朴素的杜教筛(不使用线性筛优化),其时间复杂度为,
∑ i ∈ R ( n ) T ( i ) = ∑ i ∈ R ( n ) i = ∑ i = 1 ⌊ n ⌋ i + ∑ j = 2 ⌊ n ⌋ n j < ∑ i = 1 ⌊ n ⌋ i + n i ≈ ∫ 0 n ( x + n x ) d x = n 3 / 4 \begin{align} \sum_{i∈R(n)}T(i)&=\sum_{i∈R(n)}\sqrt i \\ &=\sum_{i=1}^{\left\lfloor \sqrt n \right\rfloor}\sqrt i + \sum_{j=2}^{\left\lfloor \sqrt n \right\rfloor}\sqrt{\frac nj} \\ &<\sum_{i=1}^{\left\lfloor \sqrt n \right\rfloor}\sqrt i +\sqrt{\frac ni} \\ &≈\int_0^{\sqrt n}(\sqrt x +\sqrt{\frac nx})dx \\ &=n^{3/4} \end{align} iR(n)T(i)=iR(n)i =i=1n i +j=2n jn i=1n i +in 0n (x +xn )dx=n3/4
即为 O ( n 3 / 4 ) O(n^{3/4}) O(n3/4)

若使用线性筛预处理前 k k k 项,预处理部分时间复杂度为 O ( k ) O(k) O(k) 。当 k > n k>\sqrt n k>n 时时间复杂度变为,
k + ∑ i ∈ R ( n ) , i > k T ( i ) = k + ∑ i ∈ R ( n ) , i > k i = k + ∑ j = 2 ⌊ n / k ⌋ n j < k + ∑ i = 1 ⌊ n / k ⌋ n i ≈ k + ∫ 0 n / k n x d x = k + n k \begin{aligned} k+\sum_{i\in R(n),i>k}T(i)&=k+\sum_{i\in R(n),i>k}\sqrt{i} \\ &=k+ \sum_{j=2}^{\lfloor n/k \rfloor}\sqrt{\frac{n}{j}} \\ &<k+\sum_{i=1}^{\lfloor n/k \rfloor}\sqrt{\frac{n}{i}} \\ &\approx k+\int_0^{n/k}\sqrt{\frac{n}{x}}dx \\ &=k+\frac{n}{\sqrt{k}} \end{aligned} k+iR(n),i>kT(i)=k+iR(n),i>ki =k+j=2n/kjn <k+i=1n/kin k+0n/kxn dx=k+k n
为求上式极值,以 k k k 为自变量求导,令 d O d k = 1 − 1 2 n k − 3 2 = 0 \frac {dO}{dk}=1-\frac 12 nk^{-\frac 32}=0 dkdO=121nk23=0 ,
得到 k = O ( n 2 / 3 ) k=O(n^{2/3}) k=O(n2/3) ,此时总时间复杂度为 O ( n 2 / 3 ) O(n^{2/3}) O(n2/3)

http://www.dtcms.com/wzjs/266478.html

相关文章:

  • 找快照网站查询线上营销策略都有哪些
  • 新闻门户网站建设热搜榜上2023年热搜
  • 小程序网站开发网络营销教案ppt
  • 捷信做单网站seo推广公司招商
  • 网上做家教哪个网站安卓手机优化软件哪个好
  • 网站建设中主页指的是竞价排名适合百度这样的网络平台吗
  • wordpress的文章插件百度seo 站长工具
  • 在百度上做网站多少钱如何找推广平台
  • 北京市住房和城乡建设委网站软文写作营销
  • 网站怎样做多语言切换个人网站模板建站
  • 贵阳白云区疫情最新消息今天南京seo网络优化公司
  • 国际设计师网站百度账号24小时人工电话
  • 潍坊中小型网站建设公司搜索引擎的网站
  • 沈阳工伤保险做实网站网站建设报价
  • 芜湖做网站的邓健照片免费刷推广链接的软件
  • 免费发布出租房信息网站seo信息网
  • 诸城网站制作网络推广运营公司
  • 建设银行网站用户名是什么建网站免费
  • 一个电商网站开发要多久写一篇软文1000字
  • 张家港建设局门户网站今天的新闻 最新消息
  • 建设政府网站的费用中国宣布疫情结束日期
  • 别人用我公司权限做网站seo排名优化联系13火星软件
  • 上海哪个网站能应聘做家教的优化营商环境存在问题及整改措施
  • 宁波做网站的企业陕西疫情最新消息
  • 基于多站点的网站内容管理平台的管理与应用宁波正规站内优化seo
  • 中国建设手机银行网站优化二十条
  • 东营网站客户服务中心seo公司系统
  • 毕设源码网站今日全国疫情最新消息
  • wordpress系统邮件设置方法seo推广培训课程
  • 做电子商务网站多少钱miy188coo免费入口