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相关推荐

  1. cf145 E. Lucky Queries

    链接 点击跳转 题解 线段树维护4,7,47,744,7,47,744,7,47,74这四种子序列的最长长度 代码 #include <bits/stdc++.h> #include &l ...

  2. hihocoder 1152 Lucky Substrings

    #1152 : Lucky Substrings 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 A string s is LUCKY if and only if t ...

  3. 【原】YUI压缩与CSS media queries下的bug

    大概是上个月,使用YUI压缩一个css文件后,发现只要是被压缩后的css文件有部分根本无法工作,一直都不知啥问题引起的,让我感到头疼. 今天发现了只要是在媒体查询中的样式无法起作用,于是才开始怀疑是m ...

  4. SPOJ GSS3-Can you answer these queries III-分治+线段树区间合并

    Can you answer these queries III SPOJ - GSS3 这道题和洛谷的小白逛公园一样的题目. 传送门: 洛谷 P4513 小白逛公园-区间最大子段和-分治+线段树区间 ...

  5. 移动端zepot媒体查询media queries

    使用zepot做轮播图 <head> <meta charset="utf-8"> <meta name="viewport" c ...

  6. Media Queries

    支持情况罗列成如下表: Media Queries 使用 说起CSS3的新特性,就不得不提到 Media Queries . 本文比较详细,所以很多实际中用不到.所以如果只是想简单了解Media Qu ...

  7. SQL Server 阻止了对组件 \'Ad Hoc Distributed Queries\' 的访问

    想用openrowset查询远程数据库,结果提示SQL Server 阻止了对组件 \'Ad Hoc Distributed Queries\' 的访问错误,在网上搜索了一下,找到解决方法: --Ad ...

  8. 怎样使用CSS3媒体查询(Media Queries)制作响应式网站

    自本周开始博主将开始同大家一起研究响应式web设计,CSS3 Media Queries是入门,本周更新,博主将给大家分享media queries的一些常用的用法及注意事项. Media Queri ...

  9. 枚举 + 进制转换 --- hdu 4937 Lucky Number

    Lucky Number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) T ...

最新文章

  1. nfs client高性能参数设置
  2. Scott Mitchell 的ASP.NET 2.0数据教程之十一: 基于数据的自定义格式化
  3. 【Android】动态更新Icon
  4. 一步步把一个SpringBoot应用打包成Docker镜像并运行
  5. 程序员何苦为难程序员?
  6. mysql数值比中文检索快_MySQL 千万 级数据量根据(索引)优化 查询 速度
  7. 通达信缠论三买三卖指标公式_【新增选股指标:中枢突破】通达信版缠论自动画线选股指标今天更新1个重要新版...
  8. 自动路由_小米路由器Mesh首销 多路由自动切换/为智能家居而生
  9. virtualbox+vagrant快速创建虚拟机
  10. 解决git配置公钥仍然需要输入密码问题
  11. 在sqlserver sql语句中查找速度快
  12. 经典实用数据库新书推荐-关于mysql和oracle【转孟光】
  13. 谈谈2014年草根站长的出路
  14. VMWare 导出vmdk并转为qcow2格式
  15. Game boy模拟器(3):GPU的时序
  16. 《赐我》-一只白羊 同步歌词
  17. [ 笔记 ] 计算机网络安全_5_防火墙原理与设计
  18. 2018千峰PHP教程完整版
  19. mac安装软件管家homebrew
  20. 【随机信号处理笔记】 Chapter4 信号检测

热门文章

  1. jquery实现登录成功界面_jquery实现用户登陆界面(示例讲解)
  2. 全方位揭秘!大数据从0到1的完美落地之HDFS块详解
  3. 微信H5分享外部链接,缩略图不显示
  4. 读源码(七)—— ejs
  5. 微服务架构问题的陈词滥调终于要被清除了!
  6. StrongSwan测试环境概述
  7. php yii框架路由,yii框架如何配置路由
  8. javascript将秒转化成时间
  9. 百度前端技术学院 JavaScript Task 01
  10. 数字化诗人:这可能是第一位用算法写诗的诺贝尔文学奖得主