G - Add and Multiply Queries

G - Add and Multiply Queries

思路

开始直接用的线段树,写完才意识到是假的

由于题目说答案不会超过 1 0 18 10^{18} 1018,所以一个询问区间内的大于2的b的个数不超过64个,这样一个区间内大于2的b的就可以把a分成不超过64个连续的区间,用树状数组维护,b大于2的位置可以用线段树二分或者set的做法来找到(64logn),在这种位置上判断+a和*b哪个选择更好即可

为了防止超时,实际上应该也超不了,用链表+set写复杂度仅为64+logn,具体做法是用链表维护b大于2的位置,查询的时候二分找到第一个b大于二的位置,后面的用链表来找

代码

#define lowbit(x) (x & -x)int n;
vector<int> a, b;
vector<ll> tr;void add(int d, int x) {for (; d <= n; d += lowbit(d))tr[d] += x;
}ll get(int d) {ll res = 0;for (; d > 0; d -= lowbit(d))res += tr[d];return res;
}ll getd(int l, int r) {return get(r) - get(l - 1);
}void solve() {cin >> n;a.resize(n + 1), b.resize(n + 1);tr.resize(n + 1);for (int i = 1; i <= n; i++) {cin >> a[i];add(i, a[i]);}for (int i = 1; i <= n; i++)cin >> b[i];set<int> ds;vector<int> br(n + 1);int last = INF;for (int i = n; i >= 1; i--) {if (b[i] > 1) {ds.insert(i);br[i] = last;last = i;}}int q;cin >> q;while (q--) {int op, l, r;cin >> op >> l >> r;if (op == 1) {add(l, r - a[l]);a[l] = r;} else if (op == 2) {if (b[l] < 2 && r > 1) {auto tt = ds.lower_bound(l);if (tt != ds.end())br[l] = *tt;elsebr[l] = INF;if (tt != ds.begin()) {br[*--tt] = l;}ds.insert(l);} else if (b[l] > 1 && r < 2) {auto tt = ds.lower_bound(l);auto ft = tt;if (tt != ds.begin())br[*--tt] = br[l];ds.erase(ft);}b[l] = r;} else {ll v = a[l++];if (l > r)cout << v << endl;else {auto tt = ds.lower_bound(l);int d = (tt == ds.end() ? INF : *tt);while (d <= r) {if (d > l) {v += getd(l, d - 1);}v + a[d] >= v* b[d] ? (v += a[d]) : (v *= b[d]);l = d + 1;d = br[d];}if (l <= r) {v += getd(l, r);}cout << v << endl;}}}
}

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

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

相关文章

Android Studio Dolphin 下载、安装与配置教程

文章目录 Android Studio Dolphin简介一、核心特性二、新增功能三、用户体验优化 一&#xff0c;下载百度网盘迅雷云盘 二&#xff0c;安装三&#xff0c;下载组件四&#xff0c;添加SDK五&#xff0c;创建项目六&#xff0c;安装 Device模拟器运行项目 Android Studio Dolphin…

磁盘分区工具 DiskGenius Pro v5.5.0.1488 中文汉化版

DiskGenius 是一款专家级数据恢复软件&#xff0c;集数据恢复、硬盘分区、系统备份还原等多种功能于一身的超级工具软件&#xff0c;功能全面&#xff0c;安全可靠。可以提供磁盘的数据找回、备份、分区、修复、删除、格式化等操作&#xff0c;也能帮助用户修复磁盘坏道、彻底删…

ES 自定义排序方式

es默认score是根据query的相关度进行打分的&#xff0c;具体打分机制可以参见&#xff1a;官方文档。如果召回时既希望有相关性又能根据其他信息进行排序。 例如小红书搜索的时候&#xff0c;可能既希望有召回相关度又能根据热度信息&#xff08;如果喜欢、收藏等等参数去进行召…

OpenCV KeyPoint与描述子编解码

前言&#xff1a;OpenCV中的特征点对象与描述子对象分别由cv2.KeyPoint类与np.array类封装&#xff0c;与之相关的特征点检测与匹配等相关算法的输出、输入亦为cv2.KeyPoint对象与np.array描述子对象。因此&#xff0c;若使用OpenCV封装好的特征点检测与匹配算法不可避免的需要…

Shiro会话管理和加密

会话管理 Shiro提供了完整的企业级会话管理功能&#xff0c;不依赖于底层容器&#xff08;如Tomcat&#xff09;&#xff0c;不管是J2SE还是J2EE环境都可以使用&#xff0c;提供了会话管理&#xff0c;会话事件监听&#xff0c;会话存储/持久化&#xff0c;容器无关的集群&…

python开发工具是选择vscode还是pycharm?两款软件优缺点对照!

Pycharm和VSCode是两款流行的代码编辑器&#xff0c;它们都有各自的优缺点和适用情况。本文将从以下几个方面对它们进行比较和分析&#xff1a; 功能和扩展性性能和稳定性用户体验和界面价格和支持 功能和扩展性 Pycharm是一款专为Python开发而设计的集成开发环境&#xff08;…

《一人公司:失业潮中的高新技术工作者》读书笔记

基本信息 书名&#xff1a;一人公司&#xff1a;失业潮中的高新技术工作者作者&#xff1a;[美]卡丽莱恩&#xff08;Carrie M. Lane&#xff09;出版社&#xff1a;广东人民出版社出版时间&#xff1a;2023年11月 内容简介 本书通过18个月的田野调查和9年的跟踪寻访&#…

部署DNS主从服务器

一。DNS主从服务器作用&#xff1a; DNS作为重要的互联网基础设施服务&#xff0c;保证DNS域名解析服务的正常运转至关重要&#xff0c;只有这样才能提供稳定、快速日不间断的域名查询服务 DNS 域名解析服务中&#xff0c;从服务器可以从主服务器上获取指定的区域数据文件&…

es(1)(仅供自己参考)

elasticsearch&#xff08;ES&#xff09;是一款非常强大的开源搜索引擎&#xff0c;可以帮助我们从海量的数据中快速找到需要的内容。 elastic stack&#xff08;ELK&#xff09;&#xff1a;elasticsearch结合kibana、Logstash、Beats。被广泛的应用在日志数据分析、实时监控…

关于k8s的cilium网络插件踩坑记

cilium状态为CrashLoopBackOff coredns状态为Pending 使用的系统镜像为centos7.6 内核是3.*** 然后用的工具来部署集群&#xff0c;开始以为是调度啥的&#xff0c;然后单节点试也出现CrashLoopBackOff、Pending等状态&#xff0c;更新内核在到5 集群自己就好了 注意&am…

设计模式(三)

设计模式(三) 某些情况&#xff0c;可能会过度地使用继承来扩展对象的功能&#xff1b; 由于继承为类型引入的静态特质&#xff0c;使得这种扩展方式缺乏灵活性&#xff1b; 随着子类增多&#xff0c; 各种子类的组合会导致更多子类的膨胀 需要使用对象功能的扩展&#xff…

openssl 自签证书

生成自签证书脚本 #!/bin/bash KEY_LENGTH4096 DAYS3650 STDongBei LLiaoNing ONASA OUNASA CN*.dongbei.nasa.edu.cn EMAILxxxqq.com# 生成私有证书密钥 openssl genrsa -out server.key ${KEY_LENGTH} # 生成证书请求文件 # 警告:一定要用双引号&#xff08;单引号不解析变量…

信创认证(信创人才考评证书)的含金量?到底有多少?

“信创认证”是什么&#xff1f; 信创认证是由工业和信息化部教育与考试中心推出的国家级权威认证&#xff0c;旨在推动信息技术应用创新产业的发展&#xff0c;并构建完善的信创产业人才培养体系。该认证在个人信息技术领域具有极高的认可度。 信创认证分为初级、中级和高级三…

新手铲屎官提问,有哪几款噪音低的宠物空气净化器推荐

相信很多铲屎官都明白的的痛就是猫咪掉毛太严重&#xff0c;所以每次看到满天飞的浮毛时只想赶紧逃离&#xff0c;一点都不想清理。但是家是自己的&#xff0c;猫是自己的&#xff0c;健康也是自己的&#xff0c;不清理也得清理。 为了更有效的清理浮毛&#xff0c;我朋友特意…

参会记录|2024 中国计算机大会(CNCC 2024)

前言&#xff1a;2024年10月24-26日&#xff0c;有幸在横店参加了2024年度的中国计算机大会&#xff08;CNCC&#xff09;&#xff0c;本篇博客总结本人在会议期间收听的主要报告内容及收获。 2024.10.24 上午 夏苑海岳开襟 如何实现人工智能在现实场景中的落地&#xff1f; …

OgCloud参加HPE Discover More AI 2024,共建数智化未来!

10月16日&#xff0c;企业科技盛会HPE Discover More AI 2024在香港瑰丽酒店举行。本次大会Hewlett Packard Enterprise (HPE) 联同全球14个科技合作伙伴&#xff0c;聚焦于AI未来走势、混合云创新与边缘安全等领域&#xff0c;以主题演讲、技术展示、研讨会等形式进行&#xf…

从双斜率,野人除法看性能优化

人呐&#xff0c;天生对线性的推崇&#xff0c;却在内心又对线性的不爱。一开始人们总是从最简单的线性过程入手&#xff0c;但最终都难免因为不满足而进入指数过程。 看一个 Linux kernel 老式 O(1) 调度器的时间片计算函数的演化&#xff1a; 早期的 O(1) 是一个连续线性函…

vue 解决:npm ERR! code ERESOLVE 及 npm ERR! ERESOLVE could not resolve 的方案

1、问题描述&#xff1a; 其一、需求为&#xff1a; 想要安装项目所需依赖&#xff0c;成功运行 vue 项目&#xff0c;想要在浏览器中能成功访问项目地址 其二、问题描述为&#xff1a; 在 package.json 文件打开终端平台&#xff0c;通过执行 npm install 命令&#xff0c…

【MySQL】视图特性 用户管理

> 作者&#xff1a;დ旧言~ > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;了解什么是视图&#xff0c;我们又该如何管理用户。 > 毒鸡汤&#xff1a;有些事情&#xff0c;总是不明白&#xff0c;所以我不会坚持。早安! >…

kafka 如何减少数据丢失?

大家好&#xff0c;我是锋哥。今天分享关于【kafka 如何减少数据丢失?】面试题&#xff1f;希望对大家有帮助&#xff1b; kafka 如何减少数据丢失? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Apache Kafka 是一个高吞吐量的分布式消息队列&#xff0c;广泛用…