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

最好的医疗网站建设京东商城官网登录

最好的医疗网站建设,京东商城官网登录,网站源代码查看,如何建立自己的网站教程题目链接#x1f517;#xff1a;2643. 序列操作 - AcWing题库 前驱知识#xff1a;需要理解线段树的结构和程序基本框架、以及懒标记的操作。 题目描述 题目分析 对区间在线进行修改和查询#xff0c;一般就是用线段树来解决#xff0c;观察到题目一共有五个操作…题目链接2643. 序列操作 - AcWing题库 前驱知识需要理解线段树的结构和程序基本框架、以及懒标记的操作。 题目描述 题目分析  对区间在线进行修改和查询一般就是用线段树来解决观察到题目一共有五个操作 我们首先要思考需要用线段树维护哪些信息通过维护这些信息在查询时能够得到需要的答案。 根据查询的内容我们发现需要维护区间内1的个数以及区间内最多连续1的个数 由于题目的操作对象就是0和1我们可以想到对称维护0和1的信息主要是因为存在操作2 那么综合来看我们可以维护线段树的以下信息  区间左端点  区间右端点  区间内1的个数  区间内0的个数  区间内左边最多连续1的个数  区间内左边最多连续0的个数  区间内右边最多连续1的个数  区间内右边最多连续0的个数  区间内最长连续0的个数 区间内最长连续1的个数  操作0对应的懒标记  操作1对应的懒标记  操作2对应的懒标记 具体维护方案如下 AC代码  #include iostream #include algorithm #include cstringusing namespace std ;const int N 1e5 10 ; int n, m, a[N] ; struct Node {int l, r ; int sum0, sum1, l0, l1, r0, r1, m0, m1 ; bool flag0, flag1, rev ; }tr[4 * N] ; void pushup(int u) {tr[u].sum0 tr[u 1].sum0 tr[u 1 | 1].sum0 ; tr[u].sum1 tr[u 1].sum1 tr[u 1 | 1].sum1 ;tr[u].l0 (tr[u 1].sum1) ? tr[u 1].l0 : tr[u 1].sum0 tr[u 1 | 1].l0 ;tr[u].l1 (tr[u 1].sum0) ? tr[u 1].l1 : tr[u 1].sum1 tr[u 1 | 1].l1 ;tr[u].r0 (tr[u 1 | 1].sum1) ? tr[u 1 | 1].r0 : tr[u 1 | 1].sum0 tr[u 1].r0 ; tr[u].r1 (tr[u 1 | 1].sum0) ? tr[u 1 | 1].r1 : tr[u 1 | 1].sum1 tr[u 1].r1 ;tr[u].m0 max(max(tr[u 1].m0, tr[u 1 | 1].m0), tr[u 1].r0 tr[u 1 | 1].l0) ;tr[u].m1 max(max(tr[u 1].m1, tr[u 1 | 1].m1), tr[u 1].r1 tr[u 1 | 1].l1) ; }void pushup_Node(Node root, Node ls, Node rs) {root.sum0 ls.sum0 rs.sum0 ; root.sum1 ls.sum1 rs.sum1 ; root.l0 (ls.sum1) ? ls.l0 : ls.sum0 rs.l0 ; root.l1 (ls.sum0) ? ls.l1 : ls.sum1 rs.l1 ; root.r0 (rs.sum1) ? rs.r0 : rs.sum0 ls.r0 ; root.r1 (rs.sum0) ? rs.r1 : rs.sum1 ls.r1 ;root.m0 max(max(ls.m0, rs.m0), ls.r0 rs.l0) ; root.m1 max(max(ls.m1, rs.m1), ls.r1 rs.l1) ; }void pushdown(int u) {if (tr[u].flag0) {tr[u 1].sum0 tr[u 1].l0 tr[u 1].r0 tr[u 1].m0 tr[u 1].r - tr[u 1].l 1 ; tr[u 1 | 1].sum0 tr[u 1 | 1].l0 tr[u 1 | 1].r0 tr[u 1 | 1].m0 tr[u 1 | 1].r - tr[u 1 | 1].l 1 ;tr[u 1].sum1 tr[u 1].l1 tr[u 1].r1 tr[u 1].m1 0 ; tr[u 1 | 1].sum1 tr[u 1 | 1].l1 tr[u 1 | 1].r1 tr[u 1 | 1].m1 0 ; tr[u 1].flag0 tr[u 1 | 1].flag0 true ; tr[u 1].flag1 tr[u 1 | 1].flag1 tr[u 1].rev tr[u 1 | 1].rev false ;tr[u].flag0 false ; }if (tr[u].flag1) {tr[u 1].sum1 tr[u 1].l1 tr[u 1].r1 tr[u 1].m1 tr[u 1].r - tr[u 1].l 1 ; tr[u 1 | 1].sum1 tr[u 1 | 1].l1 tr[u 1 | 1].r1 tr[u 1 | 1].m1 tr[u 1 | 1].r - tr[u 1 | 1].l 1 ;tr[u 1].sum0 tr[u 1].l0 tr[u 1].r0 tr[u 1].m0 0 ;tr[u 1 | 1].sum0 tr[u 1 | 1].l0 tr[u 1 | 1].r0 tr[u 1 | 1].m0 0 ;tr[u 1].flag1 tr[u 1 | 1].flag1 true ;tr[u 1 | 1].flag0 tr[u 1 | 1].flag0 tr[u 1].rev tr[u 1 | 1].rev false ;tr[u].flag1 false ;}if (tr[u].rev) {swap(tr[u 1].sum0, tr[u 1].sum1) ;swap(tr[u 1 | 1].sum0, tr[u 1 | 1].sum1) ;swap(tr[u 1].l0, tr[u 1].l1) ; swap(tr[u 1 | 1].l0, tr[u 1 | 1].l1) ;swap(tr[u 1].r0, tr[u 1].r1) ; swap(tr[u 1 | 1].r0, tr[u 1 | 1].r1) ;swap(tr[u 1].m0, tr[u 1].m1) ; swap(tr[u 1 | 1].m0, tr[u 1 | 1].m1) ;tr[u 1].rev ^ 1, tr[u 1 | 1].rev ^ 1 ; tr[u].rev 0 ;} }void build(int u, int l, int r) {tr[u].l l, tr[u].r r ; if (l r) {tr[u].sum0 tr[u].l0 tr[u].r0 tr[u].m0 a[r] ^ 1 ; tr[u].sum1 tr[u].l1 tr[u].r1 tr[u].m1 a[r] 1 ; return ; }int mid l r 1 ;build(u 1, l, mid), build(u 1 | 1, mid 1, r) ; pushup(u) ; }void change1(int u, int l, int r) {if (tr[u].l l tr[u].r r) {tr[u].sum1 tr[u].l1 tr[u].r1 tr[u].m1 0 ; tr[u].sum0 tr[u].l0 tr[u].r0 tr[u].m0 tr[u].r - tr[u].l 1 ; tr[u].flag0 true, tr[u].flag1 tr[u].rev false ;return ;}pushdown(u) ; int mid tr[u].l tr[u].r 1 ; if (l mid) change1(u 1, l, r) ; if (r mid) change1(u 1 | 1, l, r) ; pushup(u) ; }void change2(int u, int l, int r) {if (tr[u].l l tr[u].r r) {tr[u].sum0 tr[u].l0 tr[u].r0 tr[u].m0 0 ; tr[u].sum1 tr[u].l1 tr[u].r1 tr[u].m1 tr[u].r - tr[u].l 1 ; tr[u].flag1 true, tr[u].flag0 tr[u].rev false ;return ;}pushdown(u) ; int mid tr[u].l tr[u].r 1 ; if (l mid) change2(u 1, l, r) ; if (r mid) change2(u 1 | 1, l, r) ; pushup(u) ; }void Reverse(int u, int l, int r) {if (tr[u].l l tr[u].r r) {swap(tr[u].sum0, tr[u].sum1) ; swap(tr[u].l0, tr[u].l1) ; swap(tr[u].r0, tr[u].r1) ; swap(tr[u].m0, tr[u].m1) ; tr[u].rev ^ 1 ; return ; }pushdown(u) ; int mid tr[u].l tr[u].r 1 ; if (l mid) Reverse(u 1, l, r) ; if (r mid) Reverse(u 1 | 1, l, r) ;pushup(u) ; }int ask1(int u, int l, int r) {if (tr[u].l l tr[u].r r) return tr[u].sum1 ; pushdown(u) ; int mid tr[u].l tr[u].r 1 ; int sum 0 ; if (l mid) sum ask1(u 1, l, r) ; if (r mid) sum ask1(u 1 | 1, l, r) ; return sum ; }Node ask2(int u, int l, int r) {if (tr[u].l l tr[u].r r) return tr[u] ; pushdown(u) ; int mid tr[u].l tr[u].r 1 ; Node res ; if (l mid) return ask2(u 1 | 1, l, r) ; if (r mid) return ask2(u 1, l, r) ; Node ls ask2(u 1, l, r), rs ask2(u 1 | 1, l, r) ; pushup_Node(res, ls, rs) ; return res ; }int main() {ios::sync_with_stdio(false) ; cin n m ; for (int i 1 ; i n ; i ) cin a[i] ;build(1, 1, n) ; while (m -- ) {int opt, l, r ; cin opt l r ; l , r ; if (opt 0) change1(1, l, r) ; else if (opt 1) change2(1, l, r) ; else if (opt 2) Reverse(1, l, r) ; else if (opt 3) cout ask1(1, l , r) endl ;else cout ask2(1, l, r).m1 endl ; }return 0 ; }
http://www.dnsts.com.cn/news/218576.html

相关文章:

  • 做网站需要多少上海石化有做网站设计的吗
  • 成都学习网站建设网页制作与网站建设教程视频教程
  • 做捕鱼网站大理州建设局网站
  • 做盗版视频网站成本多少《高性能网站建设指南
  • 新网站怎么做优化wordpress获取用户名
  • 网站群的建设策略字体设计在线生成
  • 移动微网站开发下载官方版微信
  • 济宁北湖建设集团网站如何创建网站的快捷方式到桌面
  • 自己个人的网站怎么设计劳务公司
  • 衡水安徽学校网站建设小门户网站开发
  • 网站建设犀牛云成都网站建设怎么样
  • 哈尔滨做网站搭建的网站设计 广州
  • 兰州新区建站亚运村网站建设
  • 商城购物网站建设wordpress主机和xampp
  • 购票网站模板国防教育网站建设说明书
  • 就业指导中心网站建设总结wordpress 主机和域名
  • mockpuls可以做网站吗网上花店网站建设规划书
  • 网站改版 建设方案soho做网站要写品牌吗
  • 淘宝客怎么建立网站快速搭建房屋
  • 平阳网站优化网站被挂黑链怎么删除
  • 东莞在线网站制作平台沈阳专业做网站方案
  • 淘宝客导购网站网站中下拉列表框怎么做
  • 做网站要买什么类型云空间有域名自己做网站
  • 设计好的单位网站开发wordpress只让文章标题
  • 长安做网站价格oa管理系统免费版
  • 做网站的怎么找客户中小网站 架构
  • 济南做网站创意培训计划方案
  • 网站建设青岛外贸网站建设网站优化
  • 大丰做网站价格做公司网站和设计logo
  • 有经验的江苏网站建设高州网站seo