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

网站建设流程步骤怎么样成都网络运营推广

网站建设流程步骤怎么样,成都网络运营推广,广州市网站建设科技公司,软件开发外包公司是干嘛的题目链接🔗:2643. 序列操作 - AcWing题库 前驱知识:需要理解线段树的结构和程序基本框架、以及懒标记的操作。 题目描述 题目分析 对区间在线进行修改和查询,一般就是用线段树来解决,观察到题目一共有五个操作&…

题目链接🔗:2643. 序列操作 - AcWing题库

前驱知识:需要理解线段树的结构和程序基本框架、以及懒标记的操作。

题目描述

题目分析 

对区间在线进行修改和查询,一般就是用线段树来解决,观察到题目一共有五个操作

我们首先要思考需要用线段树维护哪些信息,通过维护这些信息,在查询时能够得到需要的答案。

根据查询的内容,我们发现需要维护区间内1的个数sum1,以及区间内最多连续1的个数m1

由于题目的操作对象就是0和1,我们可以想到对称维护0和1的信息(主要是因为存在操作2

那么综合来看,我们可以维护线段树的以下信息:

l :区间左端点

r :区间右端点

sum1 :区间内1的个数

sum0 :区间内0的个数

l1 :区间内左边最多连续1的个数

l0 :区间内左边最多连续0的个数

r1 :区间内右边最多连续1的个数

r0 :区间内右边最多连续0的个数

m0 :区间内最长连续0的个数

m1:区间内最长连续1的个数

flag0 :操作0对应的懒标记

flag1 :操作1对应的懒标记

rev :操作2对应的懒标记


具体维护方案如下

AC代码 

#include <iostream>
#include <algorithm>
#include <cstring>using 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.mmbaike.com/news/58991.html

相关文章:

  • 网站建设条件舟山百度seo
  • 泉州网站建设 首选猴子网络免费站推广网站在线
  • 深圳专业做网站开发费用汕头最好的seo外包
  • 成都网站建设天府科蓝推广关键词排名方法
  • 网站和做空间百度app下载最新版本
  • 方案模板安徽360优化
  • 网站目录文件查看百度投稿平台
  • 深圳网站设计公司设计今日国际新闻头条
  • 学校网站织梦源码手机维修培训班学校
  • 哪个专业是学网站开发的世界足球排名前十名
  • wordpress 禁止另存为网站优化网站
  • wordpress免费网站国外百度关键词怎么做
  • 汽车网站更新怎么做网站推广100种方法
  • 网页设计与网站开发chinaz站长素材
  • 做任务网站源码开鲁视频
  • 做平面设计常用的网站代运营电商公司排行榜
  • 自学做甜品师的网站游戏代理0加盟费
  • Net网站开发招聘网络营销案例实例
  • 个人网站如何做淘宝客口碑营销的优势有哪些
  • 安徽省建设业协会网站营业推广方案怎么写
  • 只用js可以做网站吗全国知名网站排名
  • 东莞网站推广公司百度云资源链接分享群组
  • 室内设计师证书哪个含金量高企业seo关键词优化
  • 深圳外贸公司网站建设公司排名网站关键词优化应该怎么做
  • 诸城哪里有做网站的软文发稿网站
  • 国内移动端网站做的最好的搜索引擎优化教程
  • 新乡建设招标投标网站网站推广优化方案
  • 阐述网站建设的步骤过程市场营销手段有哪四种
  • wordpress默认字体改黑色seo网站优化策划书
  • 企业响应式网站建设报价营销存在的问题及改进