首页 > 其他分享 >8.20题解

8.20题解

时间:2023-08-20 10:55:41浏览次数:33  
标签:frac ln 题解 sum 拼接 8.20 一段 序列

T1 sun

暴力枚举即可
时间复杂度分析:
\((lnx)' = \frac{1}{x}\)
根据牛顿-莱布尼茨公式可得:
\(\sum_{x = 1}^{n}{\frac{1}{x}} = \int_{1}^{n}{\frac{1}{x}} = ln(n) - ln{1} = ln(n)\)
令 \(ln(n) = k\) 可得:
\(n = e^{k} <= e^{15} \approx 3269017\)

T2 order

首先需要理解题意

再模拟可得:
\(1\) \(1\)
\(1\) \(10\)
\(2\) \(101\)
\(3\) \(10110\)
可以观察到:
第 \(i\) 次变化后的序列是由第 \(i - 1\) 次和第 \(i - 2\) 次的序列拼接而成
易联想到斐波拉契数列
即第 \(i\) 次变化后序列中 \(1\) 的个数等于 \(f_{i}\)

对于每次询问:

区间 \(a\)~\(b\) 中 1 的个数可用前缀和的思想求解
即 \(ans = sum_b - sum_{a - 1}\)

对于 \(sum_i\)

根据上述拼接的思想
区间 \(1\)~\(i\) 由子序列拼接而成,其中所有子序列的长度和等于 \(i\),且是某次变化后得到的序列
如:区间 \(1\) ~ \(4\) 可由 \(101\) 和 \(1\) 拼接而成,\(sum_{4} = 2 + 1 = 3\)

代码实现

同样是根据我们最初的思想
对于区间 \(1\) ~ \(x\) 它必是由两部分组成:
一段完整的上一次变化得到的序列和一段大概率不完整的上上次变化得到的序列的前一部分
因此我们对斐波拉契数列进行预处理,每次找出前一段完整的序列递归的进行求解

Tip

可以预处理到 \(f_{100} \approx 2^{62}\)

时间复杂度分析

因为每次可以使序列减少一半多(前一段序列长度大于后一段序列长度),所以单次询问小于 \(log_{2}{n}\)

T3 queue

观察数据规模:
根据题意用队列模拟即可

T4 toothpick

今天的压轴题目

核心目标

要使 \((a_i - b_i) ^ 2\) 更小,那么就要使 \(a_i - b_i\) 更小
也就是说在最小的移动步数下,将 \(a\) 序列 和 \(b\) 序列中大小排名相同的数交换到同一个位置

问题转化

首先对 \(a\) 序列和 \(b\) 序列进行离散化方便我们之后的操作
注意:如果数据有重复需要去重
当我们进行离散化后,若 \(a\) 序列和 \(b\) 序列中大小排名相同的数全部被交换到了对应的同一个位置
那么此时的 \(a\) 序列和 \(b\) 序列是完全相同的
建立一个从 \(a\) 到 \(b\) 的映射集 \(f\)
令 \(f[a[i]] = b[i]\) 若序列 \(a\) = \(b\) 那么 \(f[a[i]] = b[i] = a[i]\)
即 \(f[i] = i\) (注意此处的 \(i\) 和上文的 \(i\) 不是同一个 \(i\))
那么该问题就转化为了将 \(f\) 变为正序所需要的最小交换次数
也就是:逆序对!

完结撒花。:.゚ヽ(*´∀`)ノ゚.:。

标签:frac,ln,题解,sum,拼接,8.20,一段,序列
From: https://www.cnblogs.com/sjzyh/p/17643721.html

相关文章

  • 2023.8.20学长分享
    Exeabow_sky点分治树上路径统计或最优化。(无根树)找重心,分别考虑子树,标vis。复杂度O(nlogn)路径合并信息。对于较多次的查询可以用点分树;或离线,一次点分治处理完。[CSP-S2022T4]也可点分治。对于k=2,对链在点分治中维护信息,离线;对分治中心h,对两子树中点a,b,做like-DP,......
  • CF1656D K-good 题解
    CF1656DK-good题解题目大意给出\(t\)个整数\(n\),对于每一个\(n\)找出一个大于等于\(2\)的整数\(k\),使得\(n\)可以表示成\(k\)个mod\(k\)的结果互不相同的正整数之和。\(1\let\le10^5,2\len\le10^{18}\)。题解我们先将题意再次化简,可以得到,我们实际......
  • P9571 Horizon Blue 题解
    P9571HorizonBlue题解这个题拿平衡树写是不是小题大做了咳咳咳进入正题。首先转化一下题意。第一个操作是加入直线,第二个操作就是求所有斜率不等于\(k\)的直线的数量,第三个操作就是删掉所有斜率不等于\(k\)的和所有与该直线重合的直线。感觉这题完全就是FHQ_Treap的......
  • P9572 Colorful Days♪ 题解
    原题链接题目大意:有两个数组\(S\),\(T\),你可以把\(S\)进行复制并接到其后面形成\(S^k\),如\(S\)=123,则\(S^2\)=123123,\(S^3\)=123123123。让你求出\(S^k\)与\(T\)的最长公共子序列以及在最长公共子序列最长时\(k\)的最小值。首先思考如果无视\(k\)最小的要求,最......
  • P4197 Peaks 题解
    P4197Peaks题解题目描述在Bytemountains有\(n\)座山峰,每座山峰有他的高度\(h_i\)。有些山峰之间有双向道路相连,共\(m\)条路径,每条路径有一个困难值,这个值越大表示越难走。现在有\(q\)组询问,每组询问询问从点\(v\)开始只经过困难值小于等于\(x\)的路径所能到达的......
  • P9571 Horizon Blue 题解
    原题链接题目大意:\(有三个操作,分别为\)\(操作1加入一条直线\)\(操作2查询与一条直线相交但不重合的直线条数\)\(操作3删除所有与一条直线相交或重合的直线\)\(注意:后面两个操作的直线并不需要加入\)\(显然,两条直线相交不重合,当且仅当其k值不同\)\(所以可以把所有直线按k......
  • 寻宝 题解
    寻宝题目大意存在\(n\)个点和两种有向边:一类边分\(m\)组,每组的边权相同,从\([s_l,s_r]\)中的所有点连向\([t_l,t_r]\)中的所有点。二类边存在于任意两点\(i,j\)间,从\(i\)连向\(j\)的二类边的边权为\(|i-j|\timesa_i\)。求从点\(1\)到\(n\)的最短路......
  • P9425 [蓝桥杯 2023 国 B] AB 路线 题解
    ~~应该能过官方数据吧~~---回归正题。我开始想过更简单的深搜,但是我怕无法记忆化,所以选择了广搜。和普通的广搜不同,此题的队列要存$3$个维度,分别是$x$,$y$,$z$,分别表示横坐标、纵坐标、目前的步数模$2k$的值。此时我们可以把每$2k$步进行分组,前$k$步走在```A```的格子......
  • 洛谷P5410 【模板】扩展 KMP(Z 函数)题解
    题目链接P5410【模板】扩展KMP(Z函数)-洛谷|计算机科学教育新生态(luogu.com.cn) 分析先考虑z数组设nx[i]为字符串b与b以b[i]开头的后缀最长公共前缀设i为当前需要求的位置当前i+nx[i]-1的最大值所对应的i为q p为i对应的位置当i大于q+nx[q......
  • 8.14-8.20学习总结博客五:Hive进阶与复杂查询
    博客题目:学习总结五:Hive进阶与复杂查询实践内容概要:学习Hive进阶的使用方法,包括复杂查询、数据转换和性能优化等方面的知识。学习资源:推荐的Hive进阶教程、实践案例和性能优化技巧。实践内容:通过编写复杂的Hive查询语句,探索Hive的高级功能和性能优化方法,并分享实践中的挑战和解决......