mcfx's blog

题解、Writeup、游记和碎碎念

WC2018 退役记

占坑
果然考炸了
然而退役失败

NOIP2017 退役记

占坑
退役失败.jpg

BZOJ 4926: 皮皮妖的递推

YOUSIKI 学习了递推,于是他请皮皮妖给他出道题,皮皮妖说:
f(1)=1,f(i)=i-f(i-1),求 f(n)
YOUSIKI 看了一眼把它秒切了,于是他要求皮皮妖加大难度,皮皮妖想了想,说:
f(1)=1,f(i)=i-f(f(i-1)),求 f(n)
YOUSIKI 看了两眼把它秒切了,于是他要求皮皮妖加大难度,皮皮妖想了想,说:
f(1)=1,f(i)=i-f(f(f(i-1))),求 f(n)
YOUSIKI 看了三眼把它秒切了,于是他要求皮皮妖加大难度,皮皮妖想了想,说:
...
...
...
YOUSIKI 看了 m 眼,但是没有能秒切,于是他找到你,请你帮他解决这个问题。

Codeforces 809E. Surprise me!

给一棵树,每个点点权 aia_i,保证 aia_i 各不相同,现在随机选两个点 u,vu,v,求 f(u,v)=φ(auav)dis(u,v)f(u,v)=\varphi(a_u\cdot a_v)\cdot dis(u,v) 的期望,mod109+7\bmod 10^9+7

SCOI 2017 酱油记

省选终于考完了啊。。

BZOJ 2694 & 4659 Lcm

fa(1).jpg

BZOJ 3926: [Zjoi2015]诸神眷顾的幻想乡

幽香是全幻想乡里最受人欢迎的萌妹子,这天,是幽香的 2600 岁生日,无数幽香的粉丝到了幽香家门前的太阳花田上来为幽香庆祝生日。
粉丝们非常热情,自发组织表演了一系列节目给幽香看。幽香当然也非常高兴啦。
这时幽香发现了一件非常有趣的事情,太阳花田有 n 块空地。在过去,幽香为了方便,在这 n 块空地之间修建了 n-1 条边将它们连通起来。也就是说,这 n 块空地形成了一个树的结构。
有 n 个粉丝们来到了太阳花田上。为了表达对幽香生日的祝贺,他们选择了 c 中颜色的衣服,每种颜色恰好可以用一个 0 到 c-1 之间的整数来表示。并且每个人都站在一个空地上,每个空地上也只有一个人。这样整个太阳花田就花花绿绿了。幽香看到了,感觉也非常开心。
粉丝们策划的一个节目是这样的,选中两个粉丝 A 和 B(A 和 B 可以相同),然后 A 所在的空地到 B 所在的空地的路径上的粉丝依次跳起来(包括端点),幽香就能看到一个长度为 A 到 B 之间路径上的所有粉丝的数目(包括 A 和 B)的颜色序列。一开始大家打算让人一两个粉丝(注意:A,B 和 B,A 是不同的,他们形成的序列刚好相反,比如红绿蓝和蓝绿红)都来一次,但是有人指出这样可能会出现一些一模一样的颜色序列,会导致审美疲劳。
于是他们想要问题,在这个树上,一共有多少可能的不同的颜色序列(子串)幽香可以看到呢?
太阳花田的结构比较特殊,只与一个空地相邻的空地数量不超过 20 个。

对于各种并查集写法速度的研究

最快的写法是:while 非递归+按秩合并+秩和 fa 记在一个数组上,当 N 较小时秩选用 size,当 N 较大时秩选用 depth。
当不方便非递归时可以写递归的。 inline 似乎没有明显优化。

BZOJ 3160: 万径人踪灭

https://darkbzoj.tk/problem/3160

BZOJ 2989: 数列 & 4170: 极光

给定一个长度为 n 的正整数数列 a[i]。
定义 2 个位置的 graze 值为两者位置差与数值差的和,即 graze(x,y)=|x-y|+|a[x]-a[y]|。
2 种操作(k 都是正整数):
1.Modify x k:将第 x 个数的值修改为 k。
2.Query x k:询问有几个 i 满足 graze(x,i)<=k。因为可持久化数据结构的流行,询问不仅要考虑当前数列,还要考虑任意历史版本,即统计任意位置上出现过的任意数值与当前的 a[x]的 graze 值<=k 的对数。(某位置多次修改为同样的数值,按多次统计)

Older →