首页 > 其他分享 >某道毒瘤题的做题记录

某道毒瘤题的做题记录

时间:2022-10-05 18:34:13浏览次数:36  
标签:某道 dfrac times 毒瘤 ge 做题 哈希 mathcal QL

\(\text{ABC 238 G}\)

题意

给定一个序列 \(a\),和 \(q\) 次询问,每次询问询问是否有

\[\exists k \in \mathbb N, \prod_{i=l}^r a_i = k^3 \]

非正解

显然可以对 \(a_i\) 进行质因数分解,并预处理出每个质因数的前缀和,则可以在 \(\mathcal O(n^{1.5} + q \times \dfrac {a}{\ln a})\) 的时间内暴力解决。
注意到做的前缀和相当于三进制不进位加法,则定义 \(A_i\) 为 \(A\) 中三进制位为 \(i\) 的位编号的集合,
则会有

\[(A \oplus B)_0 = (A_0 \cap B_0) \cup (A_1 \cap B_2) \cup (A_2 \cap B_1) \]

\[(A \oplus B)_1 = (A_1 \cap B_0) \cup (A_0 \cap B_1) \cup (A_2 \cap B_2) \]

\[(A \oplus B)_2 = U - (A \oplus B)_0 - (A \oplus B)_1 \]

,\(\tt bitset\) 优化即可,时间复杂度:\(\mathcal O(n^{1.5} + q \times \dfrac {a}{\omega \ln a})\),其中 \(\omega \approx 10\)。

题解

考虑用哈希函数解决本题。如果存在一个函数 \(f(x) : \mathbb N^{\mathcal O(a/\ln a)} \to \mathbb N\)(输入实际上是质因数分解),满足 \(f(a + b) = f(a) + f(b)\),且存在一个性质 \(P(x)\),使得 \(P(f(x))\) 是 \(x\) 对应的整数是立方数的必要条件,就称 \(f\) 是一个哈希函数。
于是,对于任意的 \(\{x_i\}\),有

\[f(a) := \sum_{i=1}^{} x_ia_i \]

是哈希函数。
证明:
\(P(k) \iff 3 \mid k\):如果 \(a\) 对应的整数是立方数,则有 \(\forall i, 3 \mid a_i\),此时,\(f(a)\) 的每一项都 \(\equiv 0 \pmod 3\),故成立。
线性性成立:

\[\sum_{i=1}^{} x_ia_i + \sum_{i=1}^{} x_ib_i = \sum_{i=1}^{} x_i (a_i + b_i) = f(a+b) \]


我们来分析哈希函数的正确率:
对于一个如上构造的哈希函数 \(f\),设一个区间是立方数的概率为 \(p\),则有

概率表 是立方数 非立方数
预测正确 \(p\) \(\dfrac 23\)
预测错误 \(0\) \(\dfrac 13-p\)

,准确率 = \(\dfrac{{准确预测}}{{总预测}} = p + \dfrac 23 \ge \dfrac 23\),失误率 \(\le \dfrac 13\),就定义最高失误率 \(l := \dfrac 13\)。
设我们有 \(h\) 个哈希函数,则 \(h\) 个哈希函数都失误的概率为 \(l^h\),定义 \(L := l^h\)。因为我们有 \(Q\) 次询问,则至少有一个哈希函数失误的概率为 \(1 - (1 - L)^Q\),我们将证明这个柿子 \(\le QL\):
数学归纳法:

  • \(Q = 1\) 时左 \(= 1 - (1 - L) = L\),右 \(= 1L = L\)(总不可能零次询问吧)
  • \(Q \gt 1\) 时:
    进行移项,化为 \((1 - L)^Q \ge 1 - QL\),进行变换:
    \(\begin{array}{l} (1 - L)^Q \ge 1 - QL \\ (1 - L)^{Q - 1} (1 - L) \ge 1 - QL \\ (1 - L)^{Q - 1} \ge 1 - (Q - 1)L \\ (1 - (Q - 1)L) (1 - L) \ge 1 - QL \\ 1 - (Q - 1)L - L(1 - (Q - 1)L) = 1 - QL + (Q - 1)L \ge 1 - QL \end{array}\)
    证毕。

设有 \(c\) 个测试点,则失误率 \(\le c \times q \times l^h\)。
于是让我们来计算一下时间复杂度:

  1. 质因数分解 \(\mathcal O(na^{0.5})\)
  2. 预处理前缀和 \(\mathcal O(h \log a)\)(考虑到一个数的质因数分解最多为 \(2 \times \cdots \times 2\))
  3. 询问 \(\mathcal O(qh)\)

总时间复杂度 \(\mathcal O(na^{0.5} + h(\log a + q))\)。
考虑到时限为 \(\rm 3s\),可以取 \(h = 300\)。
可以通过。(其实这 \(h\) 个哈希函数也可以状压,大概会有 \(\dfrac 1\omega\) 的常因子优化)

标签:某道,dfrac,times,毒瘤,ge,做题,哈希,mathcal,QL
From: https://www.cnblogs.com/lhx-oier/p/16754608.html

相关文章

  • 做题记录整理数据结构2 541. 疯狂的馒头(2022/10/3)
    541.疯狂的馒头非常妙的构造题(妙到甚至没想到)首先就是发现肯定是需要O(n)的算法我们会发现倒着找出来的那一次就是馒头最后染色的次数然后难点就在于如何保证每个馒头......
  • 做题记录整理数论1 P6102 [EER2]谔运算(2022/10/3)
    P6102[EER2]谔运算位运算题,但是就算进数论里面吧之前说dp是我学得最烂的(其实都没好到哪里去),现在发现原来数论才是。。。由于是看题解的,而且数论题看题解和白嫖也差不多......
  • 做题记录整理数据结构1 P6033. [NOIP2004 提高组] 合并果子 加强版(2022/10/3)
    P6033.[NOIP2004提高组]合并果子加强版老题新做型里面最妙的就是用两个队列来代替一个堆,和蚯蚓那道题有异曲同工之妙#include<bits/stdc++.h>#definefor1(i,a,b)......
  • 做题记录整理图论2 P6591. [YsOI2020] 植树(2022/10/3)
    P6591.[YsOI2020]植树是一道相对比较简单的题,但是为什么还要对它进行总结呢?因为里面有一种先固定一个根来算子树大小,之后再进行计算的想法我之前似乎没有做过类似的题......
  • 做题记录整理图论1 P3629 [APIO2010] 巡逻(2022/10/3)
    P3629[APIO2010]巡逻写一道题顶写三道题系列,为了写这道题专门去学习了树的直径的两种求法,可以说是血赚了https://www.luogu.com.cn/blog/lscsznmhw/solution-p3629......
  • NOIP提高组做题记录
    CSP-S2019D1T1​​题目链接​​​​题解​​D1T2​​题目链接​​​​题解​​D1T3​​题目链接​​黑题直接放弃D2T1​​题目链接​​D2T2​​题目链接​​D2T3​​题目链......
  • [补档]高斯消元做题记录/或曰 学习笔记
    早就退役啦!乍一看挺水的。P2455[SDOI2006]线性方程组板子题。codeP4035[JSOI2008]球形空间产生器给定一个\(n\)维的球体上\(n+1\)个点的坐标\(a_{i,j}\)。求......
  • 活动 做题记录
    小清新数据结构题题意是个人能看懂思路考虑维护一颗权值线段树。在这颗线段树上,我们把满足度越高的排在越前面,即编号越小。这可以通过对于原数组排序实现。接着,我们......
  • 十月做题记录
    10月1日CF54C\(CF54CFirstDigitLaw\)\(Solution:\)概率\(DP\)+期望\(DP\)。由简单数位\(DP\)可得到第\(i\)个数为\(1\)开头的概率。设\(f[i][j]\)表示前......
  • 做题记录整理dp15 P1772. [ZJOI2006] 物流运输(2022/9/28)
    P3648[APIO2014]序列分割第一次做斜率优化的题题解看懂了,但没有完全看懂等以后得回来看一次#include<bits/stdc++.h>#definefor1(i,a,b)for(inti=a;i<=b;i++)......