牛客小白月赛39 D 绝望(线段树)
绝望
https://ac.nowcoder.com/acm/problem/228384
Description
Solution
维护区间修改和区间质数个数,观察发现 ,区间操作是每个数字乘上当前下标的 次方。
考虑先把原来的判断是否为质数,然后分类讨论:
- ,所有数字乘上 , 结果不改变
- 下标为质数,当前 , 那么乘上后改数字变为质数
- 剩下的操作都是让区间的数字变成非质数,做区间赋值为 即可
使用一颗线段树维护质数个数和值为 的个数
- 如果当前区间里没有 ,直接打 , 时间复杂度 ;
- 如果当前区间里有 , 继续往下找,最多会执行 次找到叶子节点,这部分的复杂度是 , 剩余的每次复杂度是
所以分析得到, 次操作下复杂度是 。
Code
一些比赛的题解 文章被收录于专栏
一些比赛的题解