[CF145E]Lucky Queries
145E:Lucky Queries
题意简述
维护一个只有数字 4 4和77的数列,以下有两种操作:
1.将 [l,r] [l,r]区间 4 4变为77, 7 7变为44。
2.询问全局最长不下降子序列的长度。
输出所有2操作的答案
思路
线段树维护。
维护四个信息:
1.区间 4 4的个数。
2.区间77的个数。
3.区间不降子序列的长度。
4.区间不升子序列的长度。
代码
#include<cstdio>
#include<iostream>
using namespace std;
int n,m,u,v;
char seq[1000010],opt[10];
namespace Segtree
{struct Node{int f,s,fs,sf,rev;}tree[4000010];void pushup(int node){tree[node].f=tree[node<<1].f+tree[node<<1|1].f;tree[node].s=tree[node<<1].s+tree[node<<1|1].s;tree[node].fs=max(tree[node<<1].f+tree[node<<1|1].fs,tree[node<<1].fs+tree[node<<1|1].s);tree[node].sf=max(tree[node<<1].s+tree[node<<1|1].sf,tree[node<<1].sf+tree[node<<1|1].f);}void pushdown(int node){if (tree[node].rev){swap(tree[node<<1].s,tree[node<<1].f);swap(tree[node<<1].sf,tree[node<<1].fs);tree[node<<1].rev^=1;swap(tree[node<<1|1].s,tree[node<<1|1].f);swap(tree[node<<1|1].sf,tree[node<<1|1].fs);tree[node<<1|1].rev^=1;tree[node].rev=0;}}void build(int l,int r,int node){if (l==r){if (seq[l]=='4')tree[node].f=tree[node].sf=tree[node].fs=1;elsetree[node].s=tree[node].sf=tree[node].fs=1;return;}int mid=(l+r)>>1;build(l,mid,node<<1);build(mid+1,r,node<<1|1);pushup(node);}void modify(int L,int R,int l,int r,int node){if (L<=l&&r<=R){tree[node].rev^=1;swap(tree[node].s,tree[node].f);swap(tree[node].sf,tree[node].fs);return;}pushdown(node);int mid=(l+r)>>1;if (L<=mid)modify(L,R,l,mid,node<<1);if (R>mid)modify(L,R,mid+1,r,node<<1|1);pushup(node);}
}
int main()
{scanf("%d%d",&n,&m);scanf("%s",seq+1);Segtree::build(1,n,1);for (int i=1;i<=m;i++){scanf("%s",opt);if (opt[0]=='c')printf("%d\n",Segtree::tree[1].fs);else{scanf("%d%d",&u,&v);Segtree::modify(u,v,1,n,1);}}return 0;
}
[CF145E]Lucky Queries相关推荐
- cf145 E. Lucky Queries
链接 点击跳转 题解 线段树维护4,7,47,744,7,47,744,7,47,74这四种子序列的最长长度 代码 #include <bits/stdc++.h> #include &l ...
- hihocoder 1152 Lucky Substrings
#1152 : Lucky Substrings 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 A string s is LUCKY if and only if t ...
- 【原】YUI压缩与CSS media queries下的bug
大概是上个月,使用YUI压缩一个css文件后,发现只要是被压缩后的css文件有部分根本无法工作,一直都不知啥问题引起的,让我感到头疼. 今天发现了只要是在媒体查询中的样式无法起作用,于是才开始怀疑是m ...
- SPOJ GSS3-Can you answer these queries III-分治+线段树区间合并
Can you answer these queries III SPOJ - GSS3 这道题和洛谷的小白逛公园一样的题目. 传送门: 洛谷 P4513 小白逛公园-区间最大子段和-分治+线段树区间 ...
- 移动端zepot媒体查询media queries
使用zepot做轮播图 <head> <meta charset="utf-8"> <meta name="viewport" c ...
- Media Queries
支持情况罗列成如下表: Media Queries 使用 说起CSS3的新特性,就不得不提到 Media Queries . 本文比较详细,所以很多实际中用不到.所以如果只是想简单了解Media Qu ...
- SQL Server 阻止了对组件 \'Ad Hoc Distributed Queries\' 的访问
想用openrowset查询远程数据库,结果提示SQL Server 阻止了对组件 \'Ad Hoc Distributed Queries\' 的访问错误,在网上搜索了一下,找到解决方法: --Ad ...
- 怎样使用CSS3媒体查询(Media Queries)制作响应式网站
自本周开始博主将开始同大家一起研究响应式web设计,CSS3 Media Queries是入门,本周更新,博主将给大家分享media queries的一些常用的用法及注意事项. Media Queri ...
- 枚举 + 进制转换 --- hdu 4937 Lucky Number
Lucky Number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) T ...
最新文章
- nfs client高性能参数设置
- Scott Mitchell 的ASP.NET 2.0数据教程之十一: 基于数据的自定义格式化
- 【Android】动态更新Icon
- 一步步把一个SpringBoot应用打包成Docker镜像并运行
- 程序员何苦为难程序员?
- mysql数值比中文检索快_MySQL 千万 级数据量根据(索引)优化 查询 速度
- 通达信缠论三买三卖指标公式_【新增选股指标:中枢突破】通达信版缠论自动画线选股指标今天更新1个重要新版...
- 自动路由_小米路由器Mesh首销 多路由自动切换/为智能家居而生
- virtualbox+vagrant快速创建虚拟机
- 解决git配置公钥仍然需要输入密码问题
- 在sqlserver sql语句中查找速度快
- 经典实用数据库新书推荐-关于mysql和oracle【转孟光】
- 谈谈2014年草根站长的出路
- VMWare 导出vmdk并转为qcow2格式
- Game boy模拟器(3):GPU的时序
- 《赐我》-一只白羊 同步歌词
- [ 笔记 ] 计算机网络安全_5_防火墙原理与设计
- 2018千峰PHP教程完整版
- mac安装软件管家homebrew
- 【随机信号处理笔记】 Chapter4 信号检测