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

题解:AtCoder AT_awc0063_e Number of Blocks in an Interval

本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。欢迎大家订阅我的专栏算法题解C与Python实现附上汇总贴算法竞赛备考冲刺必刷题C | 汇总【题目来源】AtCoderE - Number of Blocks in an Interval【题目描述】Takahashi manages a coloring sheet consisting ofN NNcells arranged in a horizontal row. The cells are numbered from1 11toN NNfrom left to right.高桥管理着一个由N NN个单元格横向排列组成的填色纸。单元格从左到右编号为1 11到N NN。Each celli iiis painted with colorC i C_iCi​. In a sequence of cells, a maximal consecutive interval of the same color that cannot be extended further is called ablock. Thenumber of blocksin an interval[ L , R ] [L, R][L,R]is the number of blocks when the cell sequenceC L , C L 1 , … , C R C_L, C_{L1}, \dots, C_RCL​,CL1​,…,CR​is divided into blocks.每个单元格i ii被涂上了颜色C i C_iCi​。在单元格序列中一个无法再扩展的最大、连续、同颜色的区间被称为块。区间[ L , R ] [L, R][L,R]的块数是将单元格序列C L , C L 1 , … , C R C_L, C_{L1}, \dots, C_RCL​,CL1​,…,CR​划分为块后得到的块的数量。For example, if the sequence is1 , 1 , 2 , 2 , 2 , 1 1, 1, 2, 2, 2, 11,1,2,2,2,1, the blocks are( 1 , 1 ) , ( 2 , 2 , 2 ) , ( 1 ) (1, 1), (2, 2, 2), (1)(1,1),(2,2,2),(1), giving3 33blocks, so the number of blocks is3 33.例如如果序列是1 , 1 , 2 , 2 , 2 , 1 1, 1, 2, 2, 2, 11,1,2,2,2,1则块为( 1 , 1 ) , ( 2 , 2 , 2 ) , ( 1 ) (1, 1), (2, 2, 2), (1)(1,1),(2,2,2),(1)共3 33个块因此块数为3 33。Aoki performs a total ofQ QQoperations of the following two types. Process each operation in order and answer the queries.青木将执行总共Q QQ次以下两种类型的操作。按顺序处理每个操作并回答查询。1 L R X: Change the color of all cells in the interval[ L , R ] [L, R][L,R]toX XX.1 L R X将区间[ L , R ] [L, R][L,R]内所有单元格的颜色更改为X XX。2 L R: Output the number of blocks in the current interval[ L , R ] [L, R][L,R].2 L R输出当前区间[ L , R ] [L, R][L,R]的块数。【输入】N NNQ QQC 1 C_1C1​C 2 C_2C2​… \dots…C N C_NCN​T 1 T_1T1​T 2 T_2T2​⋮ \vdots⋮T Q T_QTQ​The first line contains the number of cellsN NNand the number of operationsQ QQ, separated by a space.The second line contains the initial colors of each cellC 1 , C 2 , … , C N C_1, C_2, \dots, C_NC1​,C2​,…,CN​, separated by spaces.Thei ii-th of the followingQ QQlines contains thei ii-th operationT i T_iTi​. Each operation is in one of the following formats:1 L R X: Change the color of all cells in the interval[ L , R ] [L, R][L,R]toX XX.2 L R: A query to find the number of blocks in the current interval[ L , R ] [L, R][L,R].【输出】For each operation2 L R, output the number of blocks in that interval, one per line.【输入样例】6 6 1 1 2 2 2 1 2 1 6 2 2 5 1 3 5 1 2 1 6 1 2 4 3 2 1 6【输出样例】3 2 1 3【算法标签】#线段树#【代码详解】#includebits/stdc.husingnamespacestd;#defineintlonglongconstintN200005;intn,q;intw[N];// 线段树节点结构structNode{intl,r;// 节点表示的区间 [l, r]intlc,rc;// 区间左端点的值区间右端点的值intdt;// 懒标记-1 表示没有懒标记intcnt;// 区间内连续颜色段的数量}tr[N*4];// 向上更新节点信息voidpushup(intu){// 左端点值来自左子节点tr[u].lctr[u1].lc;// 右端点值来自右子节点tr[u].rctr[u1|1].rc;// 合并左右子节点的颜色段数量tr[u].cnttr[u1].cnttr[u1|1].cnt;// 如果左子节点的右端点值等于右子节点的左端点值说明中间是连续的需要合并if(tr[u1].rctr[u1|1].lc){tr[u].cnt--;}}// 向下传递懒标记voidpushdown(intu){autoroottr[u],ltr[u1],rtr[u1|1];// 如果有懒标记if(root.dt!-1){// 将懒标记传递给左子节点l.dtroot.dt;l.lcroot.dt;l.rcroot.dt;l.cnt1;// 区间内所有值相同只有一个颜色段// 将懒标记传递给右子节点r.dtroot.dt;r.lcroot.dt;r.rcroot.dt;r.cnt1;// 区间内所有值相同只有一个颜色段// 清除当前节点的懒标记root.dt-1;}}// 构建线段树voidbuild(intu,intl,intr){if(lr)// 叶子节点{tr[u]{l,r,w[l],w[l],-1,1};// 单个元素颜色段数量为1}else{tr[u]{l,r,0,0,-1,0};// 初始化非叶子节点intmid(lr)1;// 递归构建左右子树build(u1,l,mid);build(u1|1,mid1,r);// 向上更新节点信息pushup(u);}}// 区间更新voidupdate(intu,intl,intr,intd){// 如果当前节点区间完全包含在更新区间内if(tr[u].lltr[u].rr){// 设置懒标记tr[u].dtd;// 更新区间左右端点值tr[u].lcd;tr[u].rcd;// 整个区间变为同一种颜色颜色段数量为1tr[u].cnt1;}else{// 向下传递懒标记pushdown(u);intmid(tr[u].ltr[u].r)1;// 递归更新左子区间if(lmid){update(u1,l,r,d);}// 递归更新右子区间if(rmid){update(u1|1,l,r,d);}// 向上更新节点信息pushup(u);}}// 区间查询Nodequery(intu,intl,intr){// 如果当前节点区间完全包含在查询区间内if(tr[u].lltr[u].rr){returntr[u];}else{// 向下传递懒标记pushdown(u);intmid(tr[u].ltr[u].r)1;// 如果查询区间完全在左子树if(rmid){returnquery(u1,l,r);}// 如果查询区间完全在右子树if(lmid){returnquery(u1|1,l,r);}// 查询区间横跨左右子树Node leftquery(u1,l,r);Node rightquery(u1|1,l,r);Node res;// 合并左右子树的结果res.lcleft.lc;// 左端点值来自左子树res.rcright.rc;// 右端点值来自右子树res.cntleft.cntright.cnt;// 合并颜色段数量// 如果左子树的右端点值等于右子树的左端点值说明中间连续需要合并if(left.rcright.lc){res.cnt--;}returnres;}}signedmain(){cinnq;for(inti1;in;i){cinw[i];}// 构建线段树build(1,1,n);while(q--){intop,l,r,x;cinoplr;if(op1)// 更新操作{cinx;update(1,l,r,x);}else// 查询操作{coutquery(1,l,r).cntendl;}}return0;}【运行结果】6 6 1 1 2 2 2 1 2 1 6 3 2 2 5 2 1 3 5 1 2 1 6 1 1 2 4 3 2 1 6 3

相关文章:

题解:AtCoder AT_awc0063_e Number of Blocks in an Interval

本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。 欢迎大…...

智能体通信协议SmartAgentProtocol:打破AI孤岛,构建标准化协作生态

1. 项目概述:一个面向智能体的通用通信协议最近在开源社区里,一个名为SmartAgentProtocol/smartagent的项目引起了我的注意。乍一看这个标题,你可能会觉得它又是一个关于“智能体”或“Agent”的框架,毕竟现在AI领域里各种Agent框…...

OpenClaw部署工具包:一键自动化安装与ROS集成指南

1. 项目概述:一个为“OpenClaw”项目量身定制的部署工具包如果你在开源社区里混迹过一段时间,特别是对机器人、机械臂或者自动化控制项目感兴趣,那么你很可能听说过“OpenClaw”这个名字。它通常指代一个开源的、模块化的机械爪或夹持器项目&…...

手把手复现一次完整的VPC内网渗透:从PHP-CGI漏洞到拿下域控的实战记录

从外网到域控:VPC环境下的渗透测试实战全解析 当企业将业务迁移到云端时,虚拟私有云(VPC)常被视为安全的堡垒。但真实情况是,任何网络环境都可能存在薄弱环节。本文将带您体验一次完整的渗透测试过程,从外网的一个看似普通的Web漏…...

Hearthstone-Script完整指南:免费自动化你的炉石传说游戏体验

Hearthstone-Script完整指南:免费自动化你的炉石传说游戏体验 【免费下载链接】Hearthstone-Script Hearthstone script(炉石传说脚本) 项目地址: https://gitcode.com/gh_mirrors/he/Hearthstone-Script Hearthstone-Script是一款完全…...

DeepSeek-V4本地部署全指南:vLLM分布式推理+量化配置

⚙️ 工程深度:L4 生产级 | 📖 预计阅读:30 分钟 为什么写这篇 很多工程师面对 DeepSeek-V4 的部署决策时,第一反应是"自建肯定比 API 贵"。这个直觉并不总是错的,但它忽略了一个基本事实:API 的成本随调用量线性增长,自建的成本是固定的。两条成本曲线必…...

不止于Demo:为SeamlessM4T模型快速搭建一个带鉴权的Flask API接口(附Nginx配置与文件访问)

从Demo到生产级服务:SeamlessM4T模型API工程化实战指南 当Meta发布SeamlessM4T这款支持近百种语言转录与翻译的一体化AI模型时,技术社区为之振奋。但许多开发者在兴奋之余也面临一个现实问题:如何将这项前沿技术从演示环境真正落地到生产系统…...

生产级 Agent 架构:限流、缓存、降级、监控全攻略

⚙️ 工程深度:L4 生产级 | 📖 预计阅读:28 分钟 一句话理解: Demo 跑通不算本事,稳定跑才算产品——限流防炸、缓存省钱、降级保命、监控兜底,四块砖垒起来才是生产地基。 🎯 本文产出 令牌桶限流 + 多租户隔离 + 三级降级完整代码(可直接集成,Python 3.11+) P…...

轻量级服务器控制面板ClawPanel:可视化Nginx与SSL证书管理实践

1. 项目概述:一个为开发者而生的轻量级控制面板最近在折腾自己的服务器时,总感觉传统的Web服务器管理方式有点“重”。无论是Nginx的配置文件,还是各种服务的状态监控,都得靠命令行敲来敲去,对于需要快速部署和演示的场…...

别再手动写归一化了!PyTorch里F.normalize的L1、L2范数到底怎么选?

别再手动写归一化了!PyTorch里F.normalize的L1、L2范数到底怎么选? 深夜调试代码时,你是否也盯着屏幕上那些数值悬殊的特征向量发愁?明明模型结构没问题,训练却总是不稳定。这时候,老司机们往往会轻描淡写地…...

Git三个主要区域介绍(工作区Working Directory、暂存区Staging Area、仓库区Repository)

文章目录Git 三个主要区域详解:Working Directory、Staging Area、Repository一、Git 的三个主要区域二、Working Directory(工作区)什么是工作区工作区特点查看工作区状态三、Staging Area(暂存区)什么是暂存区为什么…...

【AISMM模型失效预警】:为什么83%的技术团队误用该模型?资深架构师紧急纠偏指南

更多请点击: https://intelliparadigm.com 第一章:AISMM模型在技术选型中的应用 AISMM(Architecture-Intent-Scale-Maturity-Monitoring)模型是一种面向工程落地的系统化技术评估框架,专为现代云原生与AI增强型系统设…...

智元Fast API SDK:统一LLM API网关的设计、部署与Go实战

1. 项目概述:智元 Fast API SDK 是什么?如果你正在开发一个需要集成大语言模型(LLM)的应用,比如一个智能客服、一个AI写作助手,或者一个数据分析工具,你可能会立刻面临一个头疼的问题&#xff1…...

GEO 不是玄学|5 月谷歌给了明确标准✨

当下做英文独立站运营的人,几乎都能明显感知到一个变化:传统关键词排名带来的自然流量,正在逐年放缓,而谷歌 AI 生成式搜索、AI Overview 推荐流量,正在成为新的流量核心入口。 很多人接触到 GEO 优化之后&#xff0c…...

开源社区治理框架:从宪法元协议到可执行代码的实践指南

1. 项目概述:从“宪法”到“代码”的治理实验最近在开源社区里,一个名为“noopolis/constitution”的项目引起了我的注意。乍一看这个标题,你可能会联想到政治学或法学,但它的实际内涵却深深扎根于软件工程、开源协作与分布式治理…...

MelonLoader:Unity游戏模组加载器的5个关键问题与解决方案

MelonLoader:Unity游戏模组加载器的5个关键问题与解决方案 【免费下载链接】MelonLoader The Worlds First Universal Mod Loader for Unity Games compatible with both Il2Cpp and Mono 项目地址: https://gitcode.com/gh_mirrors/me/MelonLoader MelonLoa…...

避坑指南:Nebula Graph分布式集群部署后,如何解决‘Host not enough’和监控Dashboard连接失败?

Nebula Graph分布式集群部署实战:从"Host not enough"到监控Dashboard的深度排错手册 第一次在Nebula Graph集群上执行空间创建命令时,那个鲜红的"Host not enough"错误提示让整个团队陷入了短暂的沉默。作为一款性能卓越的分布式图…...

VisualCppRedist AIO:Windows系统VC++运行库的终极一站式解决方案

VisualCppRedist AIO:Windows系统VC运行库的终极一站式解决方案 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经因为"MSVCP140.dll缺…...

快手无水印视频下载神器:KS-Downloader 终极使用指南

快手无水印视频下载神器:KS-Downloader 终极使用指南 【免费下载链接】KS-Downloader 快手(KuaiShou)视频/图片下载工具;数据采集工具 项目地址: https://gitcode.com/gh_mirrors/ks/KS-Downloader 还在为下载快手视频时出…...

掌握Obsidian Tasks优先级管理:6个等级让任务管理更高效

掌握Obsidian Tasks优先级管理:6个等级让任务管理更高效 【免费下载链接】obsidian-tasks Task management for the Obsidian knowledge base. 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-tasks 你是否经常在Obsidian中面对一大堆任务&#xff0…...

如何用Translumo实现游戏与视频的实时屏幕翻译:终极免费解决方案

如何用Translumo实现游戏与视频的实时屏幕翻译:终极免费解决方案 【免费下载链接】Translumo Advanced real-time screen translator for games, hardcoded subtitles in videos, static text and etc. 项目地址: https://gitcode.com/gh_mirrors/tr/Translumo …...

MAA智能辅助工具:3分钟掌握明日方舟全自动游戏管理方案

MAA智能辅助工具:3分钟掌握明日方舟全自动游戏管理方案 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手,全日常一键长草!| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址: https://gi…...

如何快速配置「阅读」APP:26个高质量书源一键导入终极指南

如何快速配置「阅读」APP:26个高质量书源一键导入终极指南 【免费下载链接】Yuedu 📚「阅读」自用书源分享 项目地址: https://gitcode.com/gh_mirrors/yu/Yuedu 还在为找不到稳定的小说资源而烦恼吗?「阅读」APP作为一款开源小说阅读…...

GoldHEN游戏修改工具:开源PS4游戏增强软件的完整指南

GoldHEN游戏修改工具:开源PS4游戏增强软件的完整指南 【免费下载链接】GoldHEN_Cheat_Manager GoldHEN Cheats Manager 项目地址: https://gitcode.com/gh_mirrors/go/GoldHEN_Cheat_Manager 还在为PS4游戏修改的复杂操作而烦恼吗?GoldHEN游戏修改…...

3步实现单电脑多人游戏:Universal Split Screen让你的聚会游戏体验升级 [特殊字符]

3步实现单电脑多人游戏:Universal Split Screen让你的聚会游戏体验升级 🎮 【免费下载链接】UniversalSplitScreen Split screen multiplayer for any game with multiple keyboards, mice and controllers. 项目地址: https://gitcode.com/gh_mirrors…...

去中心化数据同步:构建自主可控的Any-Sync系统

1. 项目概述:从“同步一切”到“掌控一切”的进化在数字生活的日常里,我们每个人都被困在无数个“信息孤岛”中。工作文档躺在公司的云盘,个人照片塞满了手机相册,读书笔记散落在不同的App,而浏览器书签则随着设备切换…...

如何免费快速恢复丢失数据:TestDisk PhotoRec终极指南

如何免费快速恢复丢失数据:TestDisk & PhotoRec终极指南 【免费下载链接】testdisk TestDisk & PhotoRec 项目地址: https://gitcode.com/gh_mirrors/te/testdisk 数据恢复和分区修复是每个计算机用户都可能遇到的紧急问题。当你不小心删除了重要文件…...

OpenClaw远程部署实战:MiniMax模型与Telegram机器人集成指南

1. 项目概述:一个可复用的远程部署技能包 如果你正在尝试将 OpenClaw 部署到一台远程的 Linux 服务器上,并且计划使用 MiniMax M2.1 模型,同时集成 Telegram 机器人,那么你很可能已经踩过或者即将踩进一些“坑”里。这个名为 op…...

为什么 MCP 在协议层会有 prompt injection的问题:工具描述如何劫持 agent 上下文

MCP(Model Context Protocol)当初被设计成 AI agent 的通用集成层,但它的架构有一个根本缺陷: 你接入的每一个 MCP 服务器,都会把它的工具描述原样放进 agent 的上下文窗口,每加一个就扩大一次攻击的可能性…...

3分钟永久备份QQ空间:GetQzonehistory完整历史说说导出指南

3分钟永久备份QQ空间:GetQzonehistory完整历史说说导出指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否还记得那些年发过的QQ空间说说?那些深夜的感慨…...