牛客小白月赛39 D 绝望(线段树)

绝望

https://ac.nowcoder.com/acm/problem/228384

Description

alt

Solution

维护区间修改和区间质数个数,观察发现 0x100 \leq x \leq 10,区间操作是每个数字乘上当前下标的 xx 次方。

考虑先把原来的判断是否为质数,然后分类讨论:

  • x=0x = 0,所有数字乘上 11, 结果不改变
  • 下标为质数,当前 ai=1,x=1a_i = 1, x = 1, 那么乘上后改数字变为质数
  • 剩下的操作都是让区间的数字变成非质数,做区间赋值为 00 即可

使用一颗线段树维护质数个数和值为 11 的个数

  • 如果当前区间里没有 11,直接打 tagtag, 时间复杂度 O(log2n)O(log_2n);
  • 如果当前区间里有 11, 继续往下找,最多会执行 nn 次找到叶子节点,这部分的复杂度是 O(nlog2n)O(nlog_2n), 剩余的每次复杂度是 O(log2n)O(log_2n)

所以分析得到,mm 次操作下复杂度是 O(nlog2n+mlog2n)O(nlog_2n + mlog_2n)

Code

https://ac.nowcoder.com/acm/contest/view-submission?submissionId=49408617&returnHomeType=1&uid=105308122

一些比赛的题解 文章被收录于专栏

一些比赛的题解

全部评论
你真的一直在写题解啊. Hard work will finally pay off!
1 回复 分享
发布于 2021-11-19 22:03
提供一组hack 20 50 8 1 1 4 3 7 2 2 7 2 10 7 9 1 8 7 9 1 1 4 1 3 8 0 1 14 20 0 1 14 16 0 2 7 17 2 18 20 1 3 17 2 2 10 18 2 1 18 2 11 17 2 8 14 2 8 14 1 1 13 1 1 17 18 1 2 6 11 1 6 19 0 2 10 13 2 1 3 2 3 9 2 13 13 2 2 11 2 6 17 1 7 16 1 1 12 19 0 1 1 17 2 1 7 20 1 2 3 12 1 6 19 0 2 8 15 2 17 19 2 4 17 1 5 20 1 1 3 7 1 1 9 10 0 1 11 17 2 1 3 18 0 2 7 18 1 1 7 0 2 1 7 2 5 14 2 3 19 1 9 10 1 2 3 9 2 12 14 1 3 18 0 1 10 19 2 1 13 20 0 2 16 18 2 15 16 1 18 19 0 1 3 17 1
点赞 回复 分享
发布于 11-18 21:08 浙江
原因是54行和59行所处的if语句中需要添加一句 t[rt].one = 0;
点赞 回复 分享
发布于 11-18 21:09 浙江
答案 4 1 1 6 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
点赞 回复 分享
发布于 11-19 14:47 浙江

相关推荐

不愿透露姓名的神秘牛友
昨天 17:16
科大讯飞 算法工程师 28.0k*14.0, 百分之三十是绩效,惯例只发0.9
点赞 评论 收藏
分享
11-14 16:13
已编辑
重庆科技大学 测试工程师
Amazarashi66:不进帖子我都知道🐮❤️网什么含金量
点赞 评论 收藏
分享
牛客868257804号:九个中铁八个中建
点赞 评论 收藏
分享
3 2 评论
分享
牛客网
牛客企业服务