day-8
hud多校一
01字典树 + 前缀异或
http://acm.hdu.edu.cn/contests/contest_showproblem.php?pid=1006&cid=984
公式推导 + bsgs
http://acm.hdu.edu.cn/contests/contest_showproblem.php?pid=1007&cid=984
推导特征方程: https://zhuanlan.zhihu.com/p/104596563
题目难点在于 分奇数偶数讨论 算出两个的最小值比较
bsgs是\(O(sqrt(n))\)的 标程800ms。。我tle。。
int t = (int)sqrt(mod) + 1;
unordered_map<ll, ll> mp;
ll Bsgs(ll a, ll b)
{
mp.clear();
b %= mod;
for (int j = 0; j < t; j++) {
ll val = b * qpow(a, j) % mod;
mp[val] = j;
}
a = qpow(a, t);
if (a == 0)
return b == 0 ? 1 : -1;
for (ll i = 0; i <= t; i++) {
ll val = qpow(a, i);
ll j = mp.find(val) == mp.end() ? -1 : mp[val];
if (j >= 0 && i * t - j >= 0)
return i * t - j;
}
return -1;
}
莫队 + 值域分块
https://acm.hdu.edu.cn/showproblem.php?pid=6959
明显是莫队,但是莫队的修改操作有nsqrt(n)个,查询只有m个,在n,m同阶的时候,我们考虑对值域分块实现O(1)修改 O(sqrt(n))查询
这样复杂度平均只有nsqrt(n) + m*sqrt(n)
我看见 你