Codeforces 145E Lucky Queries 线段树
感觉是很简单的区间合并, 但是好像我写的比较麻烦。
#include<bits/stdc++.h>
#define LL long long
#define fi first
#define se second
#define mk make_pair
#define PLL pair<LL, LL>
#define PLI pair<LL, int>
#define PII pair<int, int>
#define SZ(x) ((int)x.size())
#define ull unsigned long long
using namespace std; const int N = 1e6 + ;
const int inf = 0x3f3f3f3f;
const LL INF = 0x3f3f3f3f3f3f3f3f;
const int mod = 1e9 + ;
const double eps = 1e-; #define lson l, mid, rt << 1
#define rson mid + 1, r, rt << 1 | 1 struct info {
int up[][];
int dn[][];
} a[N << ]; info operator + (const info& a, const info& b) {
info ans;
ans.up[][] = a.up[][] + b.up[][];
ans.up[][] = max(a.up[][] + max(b.up[][], b.up[][]), a.up[][] + b.up[][]);
ans.up[][] = a.up[][] + b.up[][];
ans.dn[][] = a.dn[][] + b.dn[][];
ans.dn[][] = max(a.dn[][] + max(b.dn[][], b.dn[][]), a.dn[][] + b.dn[][]);
ans.dn[][] = a.dn[][] + b.dn[][];
return ans;
} int lazy[N << ]; void change(int rt) {
swap(a[rt].up[][], a[rt].dn[][]);
swap(a[rt].up[][], a[rt].dn[][]);
swap(a[rt].up[][], a[rt].dn[][]);
} void push(int rt) {
if(lazy[rt]) {
change(rt << ); change(rt << | );
lazy[rt << ] ^= ;
lazy[rt << | ] ^= ;
lazy[rt] = ;
}
} void build(int l, int r, int rt) {
if(l == r) {
int x; scanf("%1d", &x);
if(x == ) {
a[rt].up[][] = ;
a[rt].up[][] = ;
a[rt].up[][] = ;
a[rt].dn[][] = ;
a[rt].dn[][] = ;
a[rt].dn[][] = ;
}
else {
a[rt].up[][] = ;
a[rt].up[][] = ;
a[rt].up[][] = ;
a[rt].dn[][] = ;
a[rt].dn[][] = ;
a[rt].dn[][] = ;
}
return;
}
int mid = l + r >> ;
build(lson); build(rson);
a[rt] = a[rt << ] + a[rt << | ];
} void update(int L, int R, int l, int r, int rt) {
if(l >= L && r <= R) {
lazy[rt] ^= ;
change(rt);
return;
}
int mid = l + r >> ;
push(rt);
if(L <= mid) update(L, R, lson);
if(R > mid) update(L, R, rson);
a[rt] = a[rt << ] + a[rt << | ];
} int n, m;
char s[]; int main() {
scanf("%d%d", &n, &m);
build(, n, );
while(m--) {
scanf("%s", s);
if(s[] == 'c') {
printf("%d\n", max(a[].up[][], max(a[].up[][], a[].up[][])));
} else {
int L, R;
scanf("%d%d", &L, &R);
update(L, R, , n, );
}
}
return ;
} /*
*/
Codeforces 145E Lucky Queries 线段树的更多相关文章
- 数据结构(线段树):CodeForces 145E Lucky Queries
E. Lucky Queries time limit per test 3 seconds memory limit per test 256 megabytes input standard in ...
- Codeforces 1117G Recursive Queries [线段树]
Codeforces 洛谷:咕咕咕 思路 设\(L_i,R_i\)为\(i\)左右第一个大于它的位置. 对于每一个询问\(l,r\),考虑区间每一个位置的贡献就是\(\min(r,R_i-1)-\ma ...
- Buses and People CodeForces 160E 三维偏序+线段树
Buses and People CodeForces 160E 三维偏序+线段树 题意 给定 N 个三元组 (a,b,c),现有 M 个询问,每个询问给定一个三元组 (a',b',c'),求满足 a ...
- CodeForces 877E DFS序+线段树
CodeForces 877E DFS序+线段树 题意 就是树上有n个点,然后每个点都有一盏灯,给出初始的状态,1表示亮,0表示不亮,然后有两种操作,第一种是get x,表示你需要输出x的子树和x本身 ...
- [Codeforces 1197E]Culture Code(线段树优化建图+DAG上最短路)
[Codeforces 1197E]Culture Code(线段树优化建图+DAG上最短路) 题面 有n个空心物品,每个物品有外部体积\(out_i\)和内部体积\(in_i\),如果\(in_i& ...
- [Codeforces 1199D]Welfare State(线段树)
[Codeforces 1199D]Welfare State(线段树) 题面 给出一个长度为n的序列,有q次操作,操作有2种 1.单点修改,把\(a_x\)修改成y 2.区间修改,把序列中值< ...
- [Codeforces 316E3]Summer Homework(线段树+斐波那契数列)
[Codeforces 316E3]Summer Homework(线段树+斐波那契数列) 顺便安利一下这个博客,给了我很大启发(https://gaisaiyuno.github.io/) 题面 有 ...
- Codeforces Round #590 (Div. 3) D. Distinct Characters Queries(线段树, 位运算)
链接: https://codeforces.com/contest/1234/problem/D 题意: You are given a string s consisting of lowerca ...
- [CodeForces - 678F] Lena and Queries 线段树维护凸包
大致题意: 给出三种操作 1.往平面点集中添加一个点 2.删除第i次添加的点 3.给出一个q,询问平面点集中的q*x+y的最大值 首先对于每个询问,可将z=q*x+y转化为y=z-q*x,即过点(x, ...
随机推荐
- Python Socket函数及说明
- Python GIL全局解释器锁
'''在python原始解释器Cpython中存在GIL(Global Interpreter Lock,全局解释器锁),因此在执行Python代码 时,会产生互斥锁来限制线程对共享资源的访问,指导接 ...
- java实现版本比较
package com.hzxc.chess.server.util; /** * Created by hdwang on 2018/3/19. * 版本比较工具类 */ public class ...
- 【POJ1958】汉诺塔+
题目大意:给定一个四个柱子的汉诺塔,N 个盘子,求最少多少步移动到另一个柱子上. 题解:\(f[n]=min(2*f[i]+d[n-i])\),其中 \(d[i]\) 为汉诺三塔最小移动次数.M 塔同 ...
- 前端常用功能记录(三)—datatables表格初始化
其实上篇说的也算是jQuery Datatables的初始化,但主要是对某些字段意义的理解.下面记录的是datatables常用的功能的初始化. 数据源 我经常使用的有两种,一种是JavaScript ...
- css3背景颜色渐变属性 兼容性测试基础环境为:windows系统;IE6.0+, Firefox4.0+, Chrome4.0+, Safari4.0+, Opera15.0+
css3背景颜色渐变属性 兼容性测试基础环境为:windows系统:IE6.0+, Firefox4.0+, Chrome4.0+, Safari4.0+, Opera15.0+ 语法: <li ...
- Python内置的操作系统模块(os)与解释器交互模块(sys)
Python内置的操作系统模块(os)与解释器交互模块(sys) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本片博客只介绍Python调用操作系统的模块即os模块,以及Pyth ...
- hdu 4857 Little Devil I
http://acm.hdu.edu.cn/showproblem.php?pid=4897 题意:给你一棵树,边的颜色要么为白色,要么为黑色,初始每条边为白色,有三种操作 1.将u-v链上面的所有边 ...
- Lua程序设计(二)面向对象概念介绍
----------------------------------------------------------- Lua面向对象3 local smartMan = { name = " ...
- 比马卡龙好看N倍的中式甜点