洛谷 P3130 [USACO15DEC] Counting Haybale P

原题链接


题目本质:线段树

感觉我对线段树稍有敏感,线段树一眼就看出来了,思路出来得也快,这道题也并不是很难。

解题思路:

这道题能看出来是线段树就基本成功一半了,区间修改+区间查询,就基本上是裸的线段树,但是用朴素的线段树会超时,得加上懒标记。

代码如下:

//这狗屎出题人第一个就整个线段树
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 200010;
ll sum[N << 2];
int mm[N << 2];
ll lazy[N << 2];
int a[N];
int n, m;
char c;
int le, ri, p;
void pushup(int rt) {sum[rt] = sum[rt << 1] + sum[rt << 1 | 1];mm[rt] = min(mm[rt << 1], mm[rt << 1 | 1]);
}
void pushdown(int rt, int l, int r) {lazy[rt << 1] += lazy[rt], lazy[rt << 1 | 1] += lazy[rt];int mid = (l + r) / 2;sum[rt << 1] += lazy[rt] * (mid - l + 1);sum[rt << 1 | 1] += lazy[rt] * (r - mid);mm[rt << 1] += lazy[rt];mm[rt << 1 | 1] += lazy[rt];lazy[rt] = 0;
}
void build(int l, int r, int cur) {if (l == r) {sum[cur] = a[l];mm[cur] = a[l];return;}int mid = (l + r) >> 1;build(l, mid, cur << 1);build(mid + 1, r, cur << 1 | 1);pushup(cur);
}
ll Sum(int L, int R, int l, int r, int cur) {if (l >= L && r <= R)return sum[cur];if (lazy[cur])pushdown(cur, l, r);int mid = (l + r) >> 1;ll res = 0;if (mid >= L)res += Sum(L, R, l, mid, cur << 1);if (mid < R)res += Sum(L, R, mid + 1, r, cur << 1 | 1);return res;
}
ll Min(int L, int R, int l, int r, int cur) {if (l >= L && r <= R)return mm[cur];if (lazy[cur])pushdown(cur, l, r);int mid = (l + r) >> 1;if (mid >= R)return Min(L, R, l, mid, cur << 1);else if (mid < L)return Min(L, R, mid + 1, r, cur << 1 | 1);return min(Min(L, R, l, mid, cur << 1), Min(L, R, mid + 1, r, cur << 1 | 1));
}
void update(int L, int R, int l, int r, int cur, int z) {if (l >= L && r <= R) {sum[cur] += (ll)z * (r - l + 1);mm[cur] += z;lazy[cur] += z;return;}if (lazy[cur])pushdown(cur, l, r);int mid = (l + r) >> 1;if (mid >= L)update(L, R, l, mid, cur << 1, z);if (mid < R)update(L, R, mid + 1, r, cur << 1 | 1, z);pushup(cur);
}
int main() {cin >> n >> m;for (int i = 1; i <= n; i++)cin >> a[i];build(1, n, 1);for (int i = 0; i < m; i++) {cin >> c;if (c == 'M') {cin >> le >> ri;cout << Min(le, ri, 1, n, 1) << '\n';} else if (c == 'S') {cin >> le >> ri;cout << Sum(le, ri, 1, n, 1) << '\n';} else {cin >> le >> ri >> p;update(le, ri, 1, n, 1, p);}}return 0;
}

不对不对,忘了吐嘈出题人了,T1就来一道大线段树,我***
 

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

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

相关文章

「二叉树进阶题解:构建、遍历与结构转化全解析」

文章目录 根据二叉树创建字符串思路代码 二叉树的层序遍历思路代码 二叉树的最近公共祖先思路代码 二叉搜索树与双向链表思路代码 从前序与中序遍历序列构造二叉树思路代码 总结 根据二叉树创建字符串 题目&#xff1a; 样例&#xff1a; 可以看见&#xff0c;唯一特殊的就…

深度学习-循环神经网络-LSTM对序列数据进行预测

项目简介: 使用LSTM模型, 对文本数据进行预测, 每次截取字符20, 对第二十一个字符进行预测, LSTM层: units100, activationrelu Dense层: units输入的文本中的字符种类, 比如我使用的文本有644个不同的字符, 那么units64 激活函数: 因为是多分类, 使用softmax 因为这是最…

【AI大模型】ChatGPT模型原理介绍

ChatGPT 是一种基于大规模深度学习语言模型 GPT&#xff08;Generative Pre-trained Transformer&#xff09;的 AI 模型。它使用自然语言处理&#xff08;NLP&#xff09;技术&#xff0c;基于大量文本数据进行训练&#xff0c;通过生成式模型来理解和生成自然语言对话。以下是…

微信小程序live-pusher和video同时使用,video播放声音时时大时小

一、遇到的问题 微信小程序live-pusher和video同时使用,video播放声音时有时无时大时小 二、排查流程 业务是模拟面试,每道题一个推流live-pusher和一个面试题video,一次面试有多道面试题,页面就一个live-pusher和一个video,切换面试题时给live-pusher和video重新赋值u…

gitlab 配置ssh keys

settings -- 终端配置&#xff1a; git config --global user.email "yxthotmail.cm" 配置gitlab 账号邮箱 git config --global user.name "xt.yao" 配置gitlab账号用户名 生成SSH key&#xff0c;输入命令ssh-keygen -t rsa&#xff0c;一直按回车…

管家婆财贸ERP BB033.查看历史销售选存货

最低适用版本: 财贸系列 21.5 插件简要功能说明: 销售单支持选择历史销售明细数据,快捷开单采购单保存后,明细存货的存货备用8更新为当前采购单制单日期更多细节描述见下方详细文档插件操作视频: 进销存类定制插件--查看历史销售选存货 插件详细功能文档: 1. 销售单增…

JavaScript 的 class 和箭头函数

在JavaScript中&#xff0c;class 和箭头函数&#xff08;Arrow functions&#xff09;是ES6&#xff08;ECMAScript 2015&#xff09;引入的两个重要特性&#xff0c;它们分别提供了更简洁和更强大的方式来定义对象和函数。下面是对这两个特性的详细解释&#xff1a; Class&a…

使用Vue.js构建响应式Web应用

&#x1f496; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4bb; Gitee主页&#xff1a;瑕疵的gitee主页 &#x1f680; 文章专栏&#xff1a;《热点资讯》 使用Vue.js构建响应式Web应用 1 引言 2 Vue.js简介 3 安装Vue CLI 4 创建Vue项目 5 设计应用结构 6 创建组件 7 使用…

【nnUNet v2—修改网络】——马上更新

目录 一、二级目录三级目录 参考 一、 二级目录 三级目录 参考 [1] UUNet训练自己写的网络 [2] 【nnUNet v2版本 如何训练自己设计的网络】 [3] nnUnetV2:自定义网络 [4] link [5] link

音频重采样(libresample)

https://github.com/minorninth/libresample USB audio同步问题及Jitter分析_usb mic i2s 时钟不同步-CSDN博客 是的&#xff0c;电脑和 USB 摄像头之间的 UAC&#xff08;USB Audio Class&#xff09;传输&#xff0c;**可能会因为两边时钟不同步而引起破音问题**。时钟不同…

windows中的tracert命令

在 Windows 操作系统中&#xff0c;tracert&#xff08;全称 Trace Route&#xff09;是一个用于确定 IP 数据包到达目标主机所经过的路径的命令行工具。它通过发送具有不同生存时间&#xff08;TTL&#xff09;的 ICMP&#xff08;Internet Control Message Protocol&#xff…

2024“源鲁杯“高校网络安全技能大赛-Misc-WP

Round 1 hide_png 题目给了一张图片&#xff0c;flag就在图片上&#xff0c;不过不太明显&#xff0c;写个python脚本处理一下 from PIL import Image ​ # 打开图像并转换为RGB模式 img Image.open("./attachments.png").convert("RGB") ​ # 获取图像…

隨筆 Kafka中普通 Broker 如何收到最新的 epoch number

在 Kafka 集群中&#xff0c;当一个新的 Controller 当选之后&#xff0c;epoch number 会通过以下机制传递给其他 Broker。这个过程主要涉及 ZooKeeper 和新的 Controller 之间的交互。 1. 新的 Controller 更新 ZooKeeper 中的 epoch number&#xff1a; 当新的 Controller…

计算机网络中网络层发送报文时IP地址的变化,交换器的广播功能及相关设备功能

计算机网络中网络层发送报文时IP地址的变化 在计算机网络中&#xff0c;网络层负责数据的路由和转发&#xff0c;其中IP地址起着至关重要的作用。当报文在网络层发送时&#xff0c;目的IP地址和源IP地址的变化情况主要取决于报文所经过的网络设备和所应用的网络技术。 目的IP…

GCN+BiLSTM多特征输入时间序列预测(Pytorch)

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 GCNBiLSTM多特征输入时间序列预测&#xff08;Pytorch&#xff09; 可以做风电预测&#xff0c;光伏预测&#xff0c;寿命预测&#xff0c;浓度预测等。 Python代码&#xff0c;基于Pytorch编写 1.多特征输入单步预测…

【大数据学习 | kafka】kafuka的基础架构

1. kafka是什么 Kafka是由LinkedIn开发的一个分布式的消息队列。它是一款开源的、轻量级的、分布式、可分区和具有复制备份的&#xff08;Replicated&#xff09;、基于ZooKeeper的协调管理的分布式流平台的功能强大的消息系统。与传统的消息系统相比&#xff0c;KafKa能够很好…

MySQL-DQL练习题

文章目录 简介初始化表练习题 简介 本节简介: 主要是一些给出一些习题, 关于DQL查询相关的, DQL查询语句是最重要的SQL语句, 功能性最复杂, 功能也最强, 所以本节建议适合以及有了DQL查询基础的食用, 另外注意我们使用的是Navicat, SQL编辑的格式规范也是Navicat指定的默认格式…

Android 15: 探索未来的可能性

Android 15: 探索未来的可能性 随着技术的不断进步,我们的智能手机系统也在不断地进化。Android 15,作为谷歌最新推出的操作系统版本,带来了一系列令人兴奋的新特性和改进,让我们的数字生活更加丰富多彩。本文将带你一探Android 15的新特性,感受科技的魅力。 低光增强:…

鸿蒙实现相机拍照及相册选择照片

前言&#xff1a; 1.如果你的应用不是存储类型或者相机拍照类型&#xff0c;你就需要用 kit.CameraKit Api 实现相机拍照和相册选择照片功能&#xff0c;如果你不用这个的话&#xff0c;你使用 picker.PhotoViewPicker &#xff0c;你就需要申请权限&#xff0c;那你提交应用审…

在linux上安装r-base和rpy2到conda环境

安装r-base(国外&#xff0c;可能需要很久>5min&#xff0c;或者需要多次尝试) conda install r-base 安装rpy2 pip install rpy2 在r-base下安装R包 在命令行输入R进入R语言环境&#xff0c;安装其他R包 R install.packages("mclust") 安装完成后退出R环…