Codeforces Round #104 (Div. 1) E. Lucky Queries (线段树)

网络流题目合集 属实狠活 HDU 2883 kebab还是区间k重覆盖的变形,然而每想到 就这? HDU 3315 My Brute HDU 3947 River Problem 区间k重覆盖的变形 拉了 阅读详情

题意:

        长度为n的47串,两种操作,一种是区间变换,即4变7,7变4,一种是询问,问最长的非严格递增子序列长度

思路:

        线段树维护即可,47可以抽象成01串,变换就是异或,存储全0串最长长度,全1串最长长度,000..111串长度,111…000串长度,变换就让全0和全1交换,000…111和111…000交换,然后pushup的时候全1和全0可以根据左右儿子直接相加得到,000….111和111…000可以由儿子推出

错误及反思:

代码:

#include<bits/stdc++.h>
using namespace std;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
const int N = 1001000;
int segtree[N<<2][4],lazy[N<<2];//  0 for 0-0  1 for 0-1  2 for 1-0 3 for 1-1
char s[N];
int n,m;

void pushup(int rt){
    segtree[rt][0]=segtree[rt<<1][0]+segtree[rt<<1|1][0];
    segtree[rt][3]=segtree[rt<<1][3]+segtree[rt<<1|1][3];
    segtree[rt][1]=max(segtree[rt<<1][1]+segtree[rt<<1|1][3],segtree[rt<<1][0]+max(segtree[rt<<1|1][1],segtree[rt<<1|1][3]));
    segtree[rt][2]=max(segtree[rt<<1][2]+segtree[rt<<1|1][0],segtree[rt<<1][3]+max(segtree[rt<<1|1][2],segtree[rt<<1|1][0]));

}

void build(int l,int r,int rt){
    if(l==r){
        if(s[l]==1) segtree[rt][3]=1;
        else segtree[rt][0]=1;
        segtree[rt][2]=1;
        segtree[rt][1]=1;
        return ;
    }
    int m=(l+r)/2;
    build(lson);
    build(rson);
    pushup(rt);
}

void Swap(int rt){
    swap(segtree[rt][0],segtree[rt][3]);
    swap(segtree[rt][1],segtree[rt][2]);
}
void pushdown(int rt){
    if(lazy[rt]){
        Swap(rt<<1); Swap(rt<<1|1);
        lazy[rt<<1]++; lazy[rt<<1|1]++;
        lazy[rt<<1]%=2;lazy[rt<<1|1]%=2;
        lazy[rt]=0;
    }
}

void update(int L,int R,int l,int r,int rt){
    if(L<=l&&R>=r){
        Swap(rt);
        lazy[rt]++;
        lazy[rt]%=2;
        return ;
    }
    pushdown(rt);
    int m=(l+r)/2;
    if(L<=m) update(L,R,lson);
    if(R>m) update(L,R,rson);
    pushup(rt);
}

int main(){
    scanf("%d%d",&n,&m);
    scanf("%s",s+1);
    for(int i=1;i<=n;i++)
        if(s[i]=='4') s[i]=0;
        else s[i]=1;
    build(1,n,1);
    while(m--){
        char t[10]; scanf("%s",t);
        if(t[0]=='c') printf("%d\n",max(max(segtree[1][1],segtree[1][0]),segtree[1][3]));
        else{
            int l,r; scanf("%d%d",&l,&r);
            update(l,r,1,n,1);
        }
    }
}
【逆强化学习-1】学徒学习(Apprenticeship Learning) 逆强化学习算法1:学徒学习。算法原理+算法步骤+代码+仿真:一个基于gym的小车上山的仿真。附赠学徒学习+Q-Table及学徒学习+DQN的全套代码。 阅读详情

相关推荐

树莓派教程(基于python编程)--入门篇

一:格式化SD卡 SD卡插入读卡器连接电脑,使用SDFormatter对SD卡进行格式化 (重装烧录也要进行着SD卡格式化操作) 二:下载官方镜像 http://downloads.raspberrypi.org/raspbian_latest 三:烧录SD卡 使用Win32DiskImager将镜像烧录到格式化后的SD卡 SD卡盘根目录(/boot)下新建一个命名为ssh的...

qq_42109746的博客 6万+

CodeForces - 145E - Lucky Queries(线段树[区间合并])

题意: 告诉你一个4和7 的序列 两种操作: 1. 讲区间的数反转(即4变7  7变4) 2。 输出总区间中   非递减子序列的长度。 思路: 注意:子序列是可以不连续的 很明显是线段树了。 统计4的长度。 统计7 的长度。 统计4开头 7结尾的长度。 然后就是简单的区间合并问题了。 因为涉及区间反转,所以 可以在开同样的变量 记录反转后 4 的长度, 反转

aozil_yang的博客 451

遥感卫星影像AI数据集格式规范详解、技术原理与数据生产全流程技术手册

本技术手册旨在系统性地梳理遥感卫星影像AI数据集的各类格式标准(涵盖VOC、COCO、YOLO及遥感专用DOTA格式等),深入剖析其背后的技术原理,并详细阐述数据生产的全过程,涵盖预处理、标注、质量控制及数据增强等关键环节。无论您是刚入门的算法工程师,还是资深的数据生产管理者,本手册都将为您提供详实的参考与指引。

panshengwu的博客 1129

[CF145E]Lucky Queries

Codeforces 数据结构

YveH 678

大麦网回流票监控实战:如何利用sign参数和cookie实现自动抢票(避坑指南)

本文详细介绍了如何利用sign参数和cookie构建大麦网回流票监控系统,实现自动化抢票。通过分析大麦网票务系统的核心机制、获取关键身份凭证、逆向分析sign签名算法,并构建完整的监控系统,帮助用户高效捕捉回流票机会。文章还提供了实战避坑指南和合法合规的注意事项,确保系统稳定运行且符合平台规则。

weixin_28568819的博客 412

手把手教你用微信小程序实现智能硬件音视频通话(含Linux/RTOS适配)

本文详细介绍了如何利用微信小程序硬件框架(WMPF)和音视频SDK,在智能硬件(包括Linux与RTOS设备)上实现音视频通话功能。文章从架构设计、设备端SDK集成、小程序VOIP插件开发到跨平台调试与性能优化,提供了全链路实战指南,帮助开发者打通微信小程序与嵌入式设备间的实时音视频通信。

ooo22的博客 329

Cf Round #104 (Div. 1) E Lucky Queries 线段树

题意:给出‘4’和‘7’组成的序列,进行两种操作,switch l r表示l~r之间的序列‘4’变成‘7’,‘7’变成‘4’,count询问整个序列的最长不下降子序列的长度。

@you! 1075

基于STM32 FOC下桥三电阻采样方式的电机相电流重构方法

如何提高三电阻采样的调制率

wanrenqi的博客 9198

线段数练习一: CF145E E. Lucky Queries

E. Lucky Queries time limit per test 3 seconds memory limit per test 256 megabytes input standard input output standard output Petya loves lucky numbers very much. Every

NOI2015的专栏 674

Android15音频进阶之4种调试线程死锁利器(八十九)

本篇目的:Android15音频进阶之4种调试线程死锁利器对于开发者来说,最令人头疼的,莫过于多线程交互出问题的时候,我们应该从哪里找突破口呢?下面来介绍一下调试Android音频中线程死锁的四种方案线程死锁是并发编程中常见的问题之一,它指的是在多个线程竞争资源的过程中,由于相互等待对方持有的资源而无法继续执行,从而导致所有线程都无法向前推进的现象。死锁不仅会导致系统性能严重下降,甚至可能导致整个系统崩溃。线程死锁的产生有四个必要条件:互斥条件:资源不能被多个线程共同使用,只能由一个线程独占。

Android系统攻城狮 1997

DDD系列 - 第6讲 仓库Repository - Mybatis篇

书接上回,之前通过一个关于拆解、微服务、面向对象的故事,向大家介绍了如何从微服务、面向对象一步步演进到DDD的,整个演进过程如下图:其中在领域层,我们定义了富血模型的领域模型,包括聚合、聚合根、实体、值对象等。聚合在代码层面中的表现形式即是一个包Package,起到了边界的作用,聚合内的对象间高内聚,而聚合间低耦合。聚合中放着实体、值对象、仓库等,实体相较于值对象的一个典型区别就是实体存在唯一标识,并且可通过该唯一标识查询到该实体并对其进行相关操作,值对象不存在唯一标识且通常作为实体。

罗小爬的技术宝书 1785

codeforces 145E Lucky Queries

codeforces 145E Lucky Queries

klc的博客 937

YOLOv11模型改进:利用注意力机制实现小目标检测精度跃升

如果你在实操中遇到精度提升不明显或速度下降过多的问题,不妨尝试调整注意力模块的类型(如替换为CA)或插入层级,或针对性优化小目标的数据集增强策略。记住,小目标检测的核心是“特征强化与空间定位”,只要结合业务场景灵活调整注意力模块的组合,你也能让YOLOv11在小目标识别任务中脱颖而出。接下来,我们从模块选型到代码落地,一步步带你打造“小目标检测专精版”YOLOv11,真正帮你解决工业场景中(如安防、质检)的小目标识别痛点。在城市安防场景中,改进后的YOLOv11对远处行人、车辆(小目标)的识别准确率提升。

m0_71589036的博客 454

Codeforces Round #104 (Div. 1) E. Lucky Queries 线段树

链接: http://codeforces.com/contest/145/problem/E 题意: 维护一个只有数字4和7的数列,以下有两种操作:  1.将[l,r]区间4变为7,7变为4。  2.询问全局最长不下降子序列的长度。  输出所有2操作的答案 题解: 线段树维护。  维护四个信息:  1.区间4的个数。  2.区间7的个数。  3.区间不降子序列的...

花海 138

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Codeforces Round #104 (Div. 1) E Lucky Queries

坑爹的360!劳资好不容易把div1的E搞出来了一编译居然被360怀疑哥的代码是病毒,擦!!坑爹么!!!尼玛敲个代码容易么!!!伤不起啊!反正劳资用这段病毒AC了!! 线段树延迟更新,只是要在比赛那么短的时间内敲出来并且没有错误很难,看到那么多红名的一个小时不到就把这题a了,这就是红名和蓝名的差距么!!!什么时候哥才能红名呢。。。。 #include #include #include #

量子流逝 893

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Codeforces145 E. Lucky Queries(线段树)

题意: 给定长度为n的字符串S,只包含字符4和7, 现在要进行m次操作,操作有两种: (switch l,r):将[l,r]内的4变成7,7变成4 (count):计算串中的最长非递增子序列,输出长度 数据范围:n<=1e6,m<=3e5 ...

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 204

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Codeforces - Lucky Queries

题目链接:Codeforces - Lucky Queries 显然区间反转可以用线段树维护。 每次反转的时候,对答案的影响就是非严格LIS和LDS的交换。 AC代码: #pragma GCC optimize("-Ofast","-funroll-all-loops") #include<bits/stdc++.h> //#define int long long using namespace std; const int N=1e6+10; int n,m,lazy[N<<

青烟绕指柔的博客 373

Codeforce E. Lucky Queries 线段树实践

E. Lucky Queries Petya loves lucky numbers very much. Everybody knows that lucky numbers are positive integers whose decimal record contains only the lucky digits 4 and 7. For example, numb

靖空间 1277

codeforces 145E - Lucky Queries

题目大意:给一个长度为n的47序列(就是只有4和7),两种操作: 操作1:count 要求输出当前数列的最长非下降子序列(注意是子序列,不是子串。。。一开始没看清题WA半天)。 操作2 : switch l r 将区间[l,r]之间的数反转(这里的反转指的是4变成7 7变成4) 然后就是给你一堆操作,对每一个操作1输出相应的值。。。 PS:这竟然是div1 的 E,我觉得就是一道很中规中矩

ddyyxx的程序员之路 1240

NEERC 17 I Interactive Sort (交互题)

题意: &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;给出1到n这n个数的任意一个排列,然后奇数按顺序分到o数组,偶数按顺序分到e数组,你每次可以询问e数组中第i个和o数组中第j个的大小情况,查询结束后输出结果,查询次数最多30 000次,n≥1000n≥1000n\ge1000 思路: &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;我...

Roll_Keyboard的博客 706

NEERC 17 G The Great Wall (treap)

题意: &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; 给你一个数列,每个点有abc三个值,现在让你画两个区间x,y,区间大小为r,区间不可以完全重合,当一个点没有被区间覆盖时值为a,被一个区间覆盖时值为b,两个区间为c,问第k小的数列数值总和为多少 思路: &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp

Roll_Keyboard的博客 694

Codeforces 85D. Sum of Medians (线段树)

题意: &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; 三种操作,1.加入一个数,2,删除一个数,3,询问经过排序以后,所有下标mod5mod5mod5余3的数的和 思路: &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; 注意到,当我们加入一个数以后,会让所有后面的数后移一位,删除会使得后面全部前移一位,每次移动都使得下标变化1,所以我...

Roll_Keyboard的博客 652

Codeforces Round #437 (Div. 2) B. Save the problem!

题意:给你一个数字A,要你给出一个价格和一堆硬币种类,要让这些硬币组成这个价格的方案数为A思路:想了很久没想出来,答案是除了A是1的时候,价格都是2*(A-1),硬币只有1和2,因为,你用(A-1)个2元0个1元,然后是(A-2)个2个1元,这样方案数就相当于A-1减到0,共A种,真的有点巧妙。。。错误及反思:其实自己写个完全背包打表也许能看出规律吧,可惜完全没往这个方向想代码:#include<b

Roll_Keyboard的博客 634

NEERC 17 L Laminar Family (树链剖分)

题意: &nbsp;&nbsp;&nbsp;&nbsp; 给你一颗树,每次选取一个路径,把路径上的所有点加入到一个集合里面,问最后的集合是否两两之间满足 A∈BA∈B A\in B 或者B∈AB∈AB\in A或者A∪B=∅A∪B=∅A\cup B = \emptyset 思路: &nbsp;&nbsp;&nbsp;&nbsp;我们发现,如果最后是符合条件的,那么必定是一个集合被另一个集合...

Roll_Keyboard的博客 549
上一篇: treap入门题目集合(附模板)
下一篇: bzoj 1103 大都市meg (dfs序+线段树)
Roll_Keyboard
博客等级 码龄9年 10粉丝 128原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值