当前位置: 首页 > news >正文

阿坝州网站制作网站开通

阿坝州网站制作,网站开通,wordpress侧边栏图片,做网站北京警察找上门题目截图 题目分析 关键就是记录每次操作2时,nums1中的1的个数这就需要实现线段树进行区间反转以及区间求和 ac code class Solution:def handleQuery(self, nums1: List[int], nums2: List[int], queries: List[List[int]]) -> List[int]:n len(nums1)m le…

题目截图

在这里插入图片描述

题目分析

  • 关键就是记录每次操作2时,nums1中的1的个数
  • 这就需要实现线段树进行区间反转以及区间求和

ac code

class Solution:def handleQuery(self, nums1: List[int], nums2: List[int], queries: List[List[int]]) -> List[int]:n = len(nums1)m = len(queries)seg_tree = SegTree(nums1)# 只需要记录每次2操作时nums1中有多少个1即可total = sum(nums2)ans = []for i in range(m):if queries[i][0] == 1:l = queries[i][1]r = queries[i][2]seg_tree.reverse_range(l, r)elif queries[i][0] == 2:total += seg_tree.sum_range(0, n - 1) * queries[i][1]elif queries[i][0] == 3:ans.append(total)return ansclass SegTree:def __init__(self, nums):n = len(nums)self.arr = [SegNode() for _ in range(n * 4 + 1)]self.build(1, 0, n - 1, nums)def sum_range(self, left, right):return self.query(1, left, right)def reverse_range(self, left, right):self.modify(1, left, right)def build(self, id, l, r, nums):arr = self.arrarr[id] = SegNode()arr[id].l = larr[id].r = rarr[id].lazytag = Falseif l == r:arr[id].sum = nums[l]returnmid = (l + r) >> 1self.build(2 * id, l, mid, nums)self.build(2 * id + 1, mid + 1, r, nums)arr[id].sum = arr[2 * id].sum + arr[2 * id + 1].sum# pushdown函数:下传懒标记,即将当前区间的修改情况下传到其左右孩子结点def pushdown(self, x):arr = self.arrif arr[x].lazytag:arr[2 * x].lazytag = not arr[2 * x].lazytagarr[2 * x].sum = arr[2 * x].r - arr[2 * x].l + 1 - arr[2 * x].sumarr[2 * x + 1].lazytag = not arr[2 * x + 1].lazytagarr[2 * x + 1].sum = arr[2 * x + 1].r - arr[2 * x + 1].l + 1 - arr[2 * x + 1].sumarr[x].lazytag = False# 区间修改def modify(self, id, l, r):arr = self.arrif arr[id].l >= l and arr[id].r <= r:arr[id].sum = (arr[id].r - arr[id].l + 1) - arr[id].sumarr[id].lazytag = not arr[id].lazytagreturnself.pushdown(id)mid = (arr[id].l + arr[id].r) >> 1if arr[2 * id].r >= l:self.modify(2 * id, l, r)if arr[2 * id + 1].l <= r:self.modify(2 * id + 1, l, r)arr[id].sum = arr[2 * id].sum + arr[2 * id + 1].sum# 区间查询def query(self, id, l, r):arr = self.arrif arr[id].l >= l and arr[id].r <= r:return arr[id].sumif arr[id].r < l or arr[id].l > r:return 0self.pushdown(id)mid = (arr[id].l + arr[id].r) >> 1res = 0if arr[2 * id].r >= l:res += self.query(2 * id, l, r)if arr[2 * id + 1].l <= r:res += self.query(2 * id + 1, l, r)return resclass SegNode:def __init__(self):self.l = 0self.r = 0self.sum = 0self.lazytag = False
http://www.mmbaike.com/news/53747.html

相关文章:

  • 政府部门网站建设方案成人短期培训能学什么
  • 政府信息门户网站解决方案快速排名怎么做
  • 如何做网站教程网站收录入口申请查询
  • 武汉有那些做网站设计的公司浙江seo
  • 导入表格数据做地图网站今日新闻网
  • 有哪些网站做二手房好的公司网站建设要多少钱
  • 网站推广营销联系方式什么是seo站内优化
  • 手机网站建设市场报价湘潭网站定制
  • win7用本地文件做网站模板国内重大新闻10条
  • 高端建站用什么软件如何去做网络营销
  • 新浪云虚拟主机做电影网站百度添加到桌面
  • 深圳建设网站top028seo研究协会网app
  • 做网站挣钱吗百度网页入口
  • b站是什么平台武汉网站开发公司
  • 用买的服务器 做网站上海发布最新情况
  • 金华网站制作费用百度一下app
  • 没有页面的网站怎么做性能测试上海b2b网络推广外包
  • wordpress忘记密码如何重新安装淘宝seo软件
  • 猫猫出品wordpress高端seo服务
  • 宣城做w网站的公司网站制作基本流程
  • 珠海建设企业网站的公司站长友情链接平台
  • 开淘宝店和做网站有什么区别北京网站优化排名推广
  • 个人网页设计背景图片素材网络推广seo怎么做
  • 做影视网站有什么风险合肥网络推广培训学校
  • 做网站哪一家比较好百度搜索优化怎么做
  • 广告设计公司组织架构南通百度网站快速优化
  • 注册的空间网站免费发布推广的平台有哪些
  • 网站开发项目简单描述单页应用seo如何解决
  • 高邑做网站2021年最为成功的营销案例
  • 靖江seo快速排名搜索引擎优化内容包括哪些方面