题目名称 | 1969. [HEOI 2015]公约数数列 |
---|---|
输入输出 | gcdxor.in/out |
难度等级 | ★★★ |
时间限制 | 2000 ms (2 s) |
内存限制 | 256 MiB |
测试数据 | 10 |
题目来源 | 清羽 于2015-04-28加入 |
开放分组 | 全部用户 |
提交状态 | |
分类标签 | |
分享题解 |
通过:45, 提交:99, 通过率:45.45% | ||||
ztx | 100 | 1.027 s | 3.55 MiB | C++ |
Aglove | 100 | 1.139 s | 4.60 MiB | C++ |
Chenyao2333 | 100 | 1.176 s | 3.31 MiB | C++ |
Vergil | 100 | 1.980 s | 3.85 MiB | C++ |
Youngsc | 100 | 2.327 s | 1.96 MiB | C++ |
apt | 100 | 2.504 s | 6.55 MiB | Pascal |
真呆菌 | 100 | 2.589 s | 27.48 MiB | C++ |
天一阁 | 100 | 2.601 s | 11.92 MiB | C++ |
葳棠殇 | 100 | 2.701 s | 4.13 MiB | C++ |
zhanggengchen | 100 | 2.816 s | 5.27 MiB | Pascal |
关于 公约数数列 的近10条评论(全部评论) | ||||
---|---|---|---|---|
这不应该是nsqrt(n)log^2的算法么...为什么能过
CSU_Turkey
2017-12-25 19:47
4楼
| ||||
| ||||
map不用count()就过不了。。
这是什么道理!? 而且,实验证明,迭代版的gcd比递归慢(在不爆栈的情况下)
_Itachi
2016-10-07 20:40
2楼
| ||||
cojs氧气就是足,赞!!!!!!!!
|
设计一个数据结构. 给定一个正整数数列 $a_0, a_1, ...,a_{n - 1}$,你需要支持以下两种操作:
1. MODIFY id x: 将 $a_{id}$ 修改为 x.
2. QUERY x: 求最小的整数 $p (0 <= p < n)$,使得 $\gcd(a_0,a_1, ..., a_p) * xor(a_0, a_1, ..., a_p) = x$. 其中 $xor(a_0, a_1, ..., a_p)$ 代表 $a_0, a_1, ..., a_p$ 的异或和,$\gcd$表示最大公约数。
输入数据的第一行包含一个正整数 $n$.
接下来一行包含 $n$ 个正整数 $a_0, a_1, ..., a_{n- 1}.$
之后一行包含一个正整数 $q$,表示询问的个数。
之后 $q$ 行,每行包含一个询问。格式如题目中所述。
对于每个 QUERY 询问,在单独的一行中输出结果。如果不存在这样的 $p$,输出 no.
10 1353600 5821200 10752000 1670400 3729600 6844320 12544000 117600 59400 640 10 MODIFY 7 20321280 QUERY 162343680 QUERY 1832232960000 MODIFY 0 92160 QUERY 1234567 QUERY 3989856000 QUERY 833018560 MODIFY 3 8600 MODIFY 5 5306112 QUERY 148900352
6 0 no 2 8 8
对于 30% 的数据,$n\leq 10000,q\leq 1000$。
对于 100% 的数据,$n\leq 100000,q\leq 10000,a_i\leq 10^9(0\leq i<n)$,QUERY x 中的 $x\leq 10^{18}$,MODIFY id x 中的 $0\leq id< n,1\leq x\leq 10^9$。