【题解】 AT_abl_e Replace Digits

祝大家六一儿童节快乐!

题目传送门

正文

看到区间查询区间修改,第一反应线段树。

线段树灵魂三问:

  1. 每个节点存什么?
    • 当前这段区间表示的十进制数。
  2. 如何 p u s h _ u p push\_up push_up
    • 左儿子 乘上 十的右儿子的区间长度次方 加 右儿子
  3. 要不要懒标记?要的话如何 p u s h _ d o w n push\_down push_down
    • 显然是要的。
    • 更改左右儿子的值然后懒标记下传,当前位置懒标记清空。

思维点:在 p u s h _ d o w n push\_down push_down 的时候左右儿子值更改复杂度似乎是 O ( n ) O(n) O(n) 的。可以预处理出 1 ∼ 9 1\sim 9 19 分别一长串串起来表示的十进制数。

注意点:记得取模

Code

#include <bits/stdc++.h>
#define int long long
const int N = 2e5+10;
const int mod = 998244353;
#define ls (pos<<1)
#define rs (pos<<1|1) 
#define mid ((l+r)>>1)using namespace std;
int Node[N<<2],tag[N<<2];
int pw[N];
int num[15][N];
void push_up(int pos, int l ,int r){Node[pos] = (Node[ls]*pw[r-mid]%mod+Node[rs])%mod;
}
void build(int pos, int l, int r){if(l == r){Node[pos] = 1;return;}build(ls,l,mid);build(rs,mid+1,r);push_up(pos,l,r);
}
void ksc(int a, int b){
}
void push_down(int pos, int l, int r){if(!tag[pos]) return;tag[ls] = tag[rs] = tag[pos];Node[ls] = num[tag[pos]][mid-l+1];Node[rs] = num[tag[pos]][r-mid];tag[pos] = 0;
}
void update(int pos, int l, int r, int x, int y, int z){if(x <= l && r <= y){Node[pos] = num[z][r-l+1];tag[pos] = z;return;}push_down(pos,l,r);if(x <= mid) update(ls,l,mid,x,y,z);if(y > mid) update(rs,mid+1,r,x,y,z);push_up(pos,l,r); 
}
int n,q;signed main(){cin >> n >> q;pw[0] = 1;for(int i = 1; i <= N-5; i++) pw[i] = pw[i-1]*10%mod; //预处理10的次方for(int i = 1; i <= 9; i++){num[i][0] = 0;for(int j = 1; j <= N-5; j++){num[i][j] = (num[i][j-1]*10%mod+i)%mod;}}// 思维点所言预处理build(1,1,n);while(q--){int l,r,x;cin >> l >> r >> x;update(1,1,n,l,r,x);cout << Node[1] << "\n";} return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/20486.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【GD32】从零开始学GD32单片机高级篇——SDIO外设详解(GD32F470ZGT6)

目录 简介总线拓扑总线操作“无响应” 和 “无数据” 操作多块读写操作数据流读写操作 总线协议命令响应R1/R1b (普通命令响应)R2 (CID, CSD 寄存器)R3 (OCR 寄存器)R4 (Fast IO)R4b&#xff08;Fast IO&#xff09;R5 (中断请求)R5b&#xff08;中断请求&#xff09;R6 (发布的…

skywalking介绍及搭建

链路追踪框架比对&#xff1a; skywalking安装部署&#xff1a; 下载地址&#xff1a;Downloads | Apache SkyWalking 配置微服务与skywalking整合&#xff1a; copy agent/optional-plugins/apm-spring-cloud-getway-xx.jar到plugins&#xff0c;然后重启skywalking 监控界面…

会议管理系统(含源码+sql+视频导入教程)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 会议管理系统拥有两种角色 管理员&#xff1a;部门管理、员工管理、会议管理、会议室管理、预订会议、添加员工、注册员工审批等 用户&#xff1a;个人通知中心、预订会议、查看所有会议…

fastAPI的实例

好的,下面是一个简单的 FastAPI 示例,展示了如何创建一个基本的 API 应用程序。这个示例将包括一个简单的 GET 和 POST 请求。 首先,确保你已经安装了 FastAPI 和 Uvicorn: pip install fastapi uvicorn然后,创建一个 Python 文件(例如 main.py),在其中编写以下代码:…

网络研究观-20240601

新战争时代的商业风险 美国人已经将战争视为遥远战场上发生的事件。然而&#xff0c;网络空间打破了这种看法&#xff0c;让全球战争的真正影响来到了美国家门口。 攻击不再局限于遥远的战场&#xff0c;而是在最意想不到的时间和地点发动袭击。 谁将主宰第五次工业革命&…

FreeSWITCH 1.10.10 简单图形化界面21-录音相关

FreeSWITCH 1.10.10 简单图形化界面21-录音相关 FreeSWITCH GUI界面预览00、安装FreeSWITCH GUI先看使用手册1、录音相关的应用11、record用法&#xff1a;举例&#xff1a;注意&#xff1a; 12、record_session用法&#xff1a;举例&#xff1a; 2、录音相关的变量3、单腿录音…

使用matplotlib绘制折线条形复合图

使用matplotlib绘制折线条形复合图 介绍效果代码 介绍 在数据可视化中&#xff0c;复合图形是一种非常有用的工具&#xff0c;可以同时显示多种数据类型的关系。在本篇博客中&#xff0c;我们将探讨如何使用 matplotlib 库来绘制包含折线图和条形图的复合图。 效果 代码 imp…

联合和枚举(自定义类型)

1.枚举&#xff08;关键字&#xff1a;enum) 1.1枚举类型的声明 把可能的值一一列举 赋的值是可能取值 1.2枚举类型的优点 1&#xff09;增加代码的可读性和可维护性 2&#xff09;和#define定义的标识符比较枚举有类型检查&#xff0c;更加严谨 3&#xff09;便于调试&a…

vue:实现丝滑上传进度条

一、效果展示 缓若江海凝清光 . 二、代码 const uploadProgress ref(); //上传进度//进度丝滑更新 //进度&#xff0c;时常 const ProgressChange (targetPercent: number, duration: number) > {//performance.now() 是浏览器提供的一个高性能时间 API&#xff0c;它返…

docker参数大P与小p的区别

大P -P用于随机映射一个49000-49900之间的端口到容器内部的网络端口。 小p -p可以指定具体的主机端口映射到容器内部的网络端口。 示例 随机映射主机端口到容器的80端口 docker run -P -d nginx指定主机的8080端口映射到容器的80端口 docker run -p 8080:80 -d nginx

对等连接的作用(网络)

概述 对等连接&#xff08;Peering Connection&#xff0c;PC&#xff09;是一种大带宽、高质量的云上资源互通服务&#xff0c;可以帮助您打通腾讯云上的资源通信链路。 对等连接具有多区域、多账户、多种网络异构互通等特点&#xff0c;轻松实现云上两地三中心、游戏同服等复…

Linux系统编程(七)网络编程TCP、UDP

本文目录 一、基础知识点1. IP地址2. 端口3. 域名4. 网络协议类型5. IP协议类型6. 字节序7. socket套接字 二、常用API1. socket套接字描述符2. bind套接字绑定3. listen设置客户端连接个数4. accept接收客户端请求5. connect连接服务端 三、编程流程1.TCP编程 在学习本章之前&…

《mysql轻松学习·二》

1、创建数据表 contacts&#xff1a;数据表名 auto_increament&#xff1a;自动增长 primary key&#xff1a;主键 engineInnoDB default charsetutf8; 默认字符集utf8&#xff0c;不写就默认utf8 对数据表的操作&#xff1a; alter table 数据表名 add sex varchar(1); //添…

异常处理。

异常 是指程序运行中出现了错误。 捕获异常&#xff1a; 对bug进行提醒&#xff0c;使整个程序继续运行。 捕获所有异常&#xff1a; try:#可能出错的代码 except:如果出现异常执行的代码 可以输出异常的类型&#xff1a; try:a1bhuishprint(ab) except Exception as i:…

python的range() 函数

range() 函数 《红楼梦》&#xff0c;又名《石头记》&#xff0c;实际上是一颗神石在人间游历的故事。而这块石头&#xff0c;就是我们的主人公贾宝玉。神石在投胎成宝玉前&#xff0c;向茫茫大士和渺渺真人讲起了自己的故事&#xff1a; 女娲氏炼石补天之时&#xff0c;于大…

使用YOLOv10训练自己的数据集

1. yolov10源码下载 THU-MIG/yolov10: YOLOv10: Real-Time End-to-End Object Detection (github.com)https://github.com/THU-MIG/yolov10?tabreadme-ov-file 2. 环境配置 预先安装好ANACONDA、PyCharm或者VSCode等基本软件。参考以下博客&#xff1a; 史上最全最详细的An…

SQL注入的危害和原理

在Web应用开发中&#xff0c;SQL注入是一种常见的安全漏洞&#xff0c;它允许攻击者通过注入恶意的SQL语句来执行非法操作&#xff0c;甚至获取敏感数据。本篇博客将详细解释SQL注入的危害和原理&#xff0c;并提供一些解决方案&#xff0c;以帮助新人快速理解并避免这种安全威…

系统常用命令(也有shell相关的语言)

排查系统的磁盘占用 sudo du -h --max-depth1 df ./ 是查看挂载在哪里的意思获取当前目录下文件的总大小 du -sh 排查系统后台正在运行的python程序 ps aux | grep python杀死对应id的程序 kill -9 ID 统计当前目录下有多少文件 ls -l|grep "^-"| wc -l 显示一个脚…

unity2D跑酷游戏

项目成果 项目网盘 导入资源包 放入Assets文件Assets资源文件 游戏流程分析 摄像机size调小&#xff0c;让图片占满屏幕 人跑本质&#xff0c;相对运动&#xff0c;图片无限向右滚动 图片720&#xff0c;缩小100倍第二个图片x为7.2每unit px100两张图片刚好挨着连贯 空对象Bg…

Yolov10笔记

一、前言 清华大学团队设计的Yolov10. 在这项工作中&#xff0c;我们主要从后处理和模型结构两方面进一步优化YOLO系列模型的性能和延迟平衡。我们首先为YOLO引入了端到端训练的一致双重分配&#xff0c;这在大大降低推理延迟的情况下保证了性能。此外&#xff0c;我们针对YOLO…