abc371 f

news2024/10/10 20:38:06

F - Takahashi in Narrow Road
在这里插入图片描述我们可以发现,每次操作后,对于一段变化后的区间,其变为了一段公差为1的等差数列,所以我们如果把每个值减去对应的下标,那么对应的区间变化后,都为一个相同的值,这样就可以使用区间推平,用线段树进行维护即可,然后根据题目信息,每次计算出变化区间的左端点和右端点即可。

#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 5;
typedef long long ll;
const int maxv = 4e6 + 5;
typedef pair<ll, ll> pll;
typedef array<int,3> ar;
// #define endl "\n"
int mod=1e9+7;
const int inf=0x3f3f3f3f;

struct node
{
    ll l,r,sum,add;
    #define l(x) tr[x].l
    #define r(x) tr[x].r
    #define sum(x) tr[x].sum
    #define add(x) tr[x].add
}tr[N*4];

int a[N];


void update(int p)
{
    sum(p)=sum(p*2)+sum(p*2+1);
}


void build(int p,int l,int r)
{
    if(l==r){
        tr[p]={l,r,a[l],0};
        return ;
    }
    l(p)=l,r(p)=r;
    int mid=(l+r)/2;
    build(p*2,l,mid);
    build(p*2+1,mid+1,r);
    update(p);
}

void pushdown(int p)
{
    if(add(p)){
        sum(p*2)=(r(p*2)-l(p*2)+1)*add(p);
        sum(p*2+1)=(r(p*2+1)-l(p*2+1)+1)*add(p);
        add(p*2)=add(p);
        add(p*2+1)=add(p);
        add(p)=0;
    }
}

void modify(int p,int l,int r,int tag)
{
    if(l<=l(p)&&r(p)<=r){
        add(p)=tag;
        sum(p)=(r(p)-l(p)+1)*tag;
        return ;
    }
    pushdown(p);
    int mid=(l(p)+r(p))/2;
    if(l<=mid) modify(p*2,l,r,tag);
    if(r>mid) modify(p*2+1,l,r,tag);
    update(p);
    
}

ll query(int p,int l,int r)
{
    if(l<=l(p)&&r(p)<=r){
        return sum(p);
    }
    pushdown(p);
    int mid=(l(p)+r(p))/2;
    ll res=0;
    if(l<=mid) res+=query(p*2,l,r);
    if(r>mid) res+=query(p*2+1,l,r);
    return res;
}

void solve()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i],a[i]-=i;
    int q;
    cin>>q;
    auto get=[&](int x,int l,int r)
    {
        int ans=0;
        while(l<=r){
            int mid=(l+r)/2;
            if(query(1,mid,mid)>=x){
                ans=mid,r=mid-1;
            }
            else l=mid+1;
        }
        return ans;
    };
    auto get1=[&](int x,int l,int r)
    {
        int ans=0;
        while(l<=r){
            int mid=(l+r)/2;
            if(query(1,mid,mid)<=x){
                ans=mid,l=mid+1;
            }
            else r=mid-1;
        }
        return ans;
    };
    ll ans=0;
    build(1,1,n);
    while(q--){
        ll x,y;
        cin>>x>>y;
        y-=x;
        ll val=query(1,x,x);
        int l,r;
        if(val<=y){
            l=x,r=get1(y,x,n);

        }
        else{
            l=get(y,1,x),r=x;
        }
        // cout<<val<<" "<<l<<" "<<r<<endl;
        ans+=abs(query(1,l,r)-y*(r-l+1));
        modify(1,l,r,y);
    }
    cout<<ans<<endl;
}


int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	int t = 1;
	// cin>>t;
	while (t--)
	{
		solve();
	}
	system("pause");
	return 0;
}

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

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

相关文章

观诺奖感言:学好数理化,都被AI打趴下!

10月8日&#xff0c;瑞典皇家科学院宣布&#xff0c;将2024年诺贝尔物理学奖授予两位人工智能先驱——约翰霍普菲尔德&#xff08;John Hopfield&#xff09;和杰弗里辛顿&#xff08;Geoffrey Hinton&#xff09;。 在接到瑞典方打来的电话后&#xff0c;Hinton还在反复确认&a…

ssm基于Javaee的影视创作论坛的设计与实现

系统包含&#xff1a;源码论文 所用技术&#xff1a;SpringBootVueSSMMybatisMysql 免费提供给大家参考或者学习&#xff0c;获取源码请私聊我 需要定制请私聊 目 录 目 录 III 第1章 绪论 1 1.1选题动因 1 1.2目的和意义 1 1.3论文结构安排 2 第2章 开发环境与技术 …

刷题 双指针 滑动窗口

面试经典 150 题 - 双指针 125. 验证回文串⭐️ 学会内部字母处理函数的使用 class Solution { public:bool isPalindrome(string s) {int left 0, right s.size() - 1;while (left < right) {// 处理左边字符if (!isalnum(s[left])) {left;continue;}// 处理右边字符if…

2024 kali虚拟机安装教程,分两大步骤,图文讲解(1)

第二步链接&#xff1a; 2024 kali虚拟机安装教程&#xff0c;分两大步骤&#xff0c;图文讲解&#xff08;2&#xff09;-CSDN博客 准备工作 1.kali的iso镜像文件 2.VMware Workstation Pro 虚拟机软件 正式开始 1.创建新的虚拟机&#xff0c;勾选自定义&#xff08;高级…

King3399(ubuntu文件系统)风扇驱动

该文章仅供参考&#xff0c;编写人不对任何实验设备、人员及测量结果负责&#xff01;&#xff01;&#xff01; 0 引言 文章主要介绍King3399&#xff08;ubuntu文件系统&#xff09;风扇控制&#xff08;GPIO&#xff09;&#xff0c;涉及king-rk3399.dts设备树修改&#x…

职场人情世故,你一定要学

职场上工作固然是第一位&#xff0c;但看似平淡的人际关系的经营&#xff0c;是对工作的顺利展开有重要的辅助作用&#xff0c;人来人往&#xff0c;这几条处事你必须要懂&#xff0c;否则职场上升职、加薪会吃亏。 1、 看破不拆穿。 职场上你要活的很通透的人&#xff0c;对什…

从 Reno TCP 到 Scalable TCP,HighSpeed TCP

前文 Scalable TCP 如何优化长肥管道 介绍了 Scalable TCP&#xff0c;但联系另一个类似的算法 HighSpeed TCP(简称 HSTCP)&#xff0c;就会看到一个类似从 Reno TCP 经 BIC 到 CUBIC 的路线&#xff0c;但采用了不同的策略。 Reno TCP 经 BIC 到 CUBIC 路线的核心在于 “在长…

2024年最新(AI绘画)Stable Diffusion4.9下载及安装教程.

软件介绍 Stable Diffusion 是一款在图像生成领域具有重大影响力的软件。 从工作原理上看&#xff0c;它利用深度学习的先进算法&#xff0c;构建起复杂且强大的神经网络架构。其核心在于能够解读用户输入的文本信息&#xff0c;并将这些信息转化为图像的特征与细节。 在使用…

游戏出海:跨境卖家入驻G2A详细操作指南

《黑悟空神话》在海外爆火&#xff0c;游戏出海也成为了众多游戏开发商的热门选择。在这个趋势之下&#xff0c;G2A&#xff0c;这个专注于游戏出海的电商平台&#xff0c;凭借庞大的用户群体&#xff0c;为游戏卖家提供了一个触达全球玩家的绝佳平台。 对于想要拓展海外市场的…

【HTML】制作一个简易图片轮播器

1. 轮播器效果图 1. 正常状态下每 1.5秒 自动轮播下张图片&#xff0c;轮播结束从头开始重复 2. 鼠标悬停时停止轮播&#xff0c;可以选择左右图片切换 2. HTML 结构 文档类型声明&#xff1a;<!DOCTYPE html> 声明文档类型为HTML5。HTML标签&#xff1a;<html lang…

2024 闽盾杯-黑盾赛道WP

CRYPTO 签到题-学会SM https://www.json.cn/encrypt/sm3 题目要求小写所以需要转换一下 或者脚本&#xff1a; import hashlib message "heidun2024" hash_object hashlib.new(sm3) hash_object.update(message.encode(utf-8)) hash_value hash_object.hexdigest(…

【STM32单片机_(HAL库)】4-5-3【定时器TIM】【感应开关盖垃圾桶项目】项目实现

1.项目需求 以下几个事件触发时&#xff0c;垃圾桶自动开盖&#xff0c;并伴随蜂鸣器短响一声&#xff0c;同时 LED 灯闪烁一下&#xff0c;2秒后自动关盖&#xff1a; 检测到有人靠近检测到有震动按下按键 KEY1 2.硬件 STM32单片机最小系统震动传感器模块蜂鸣器模块&#…

对象比较工具类:实现对业务的修改记录保存(对象字段差异对比)

测试 1&#xff1a;User类 Data NoArgsConstructor AllArgsConstructor public class User {FieldLabel("姓名")private String name;FieldLabel("年龄")private Integer age;FieldLabel("手机")private String phone;FieldLabel("手机号…

宠物空气净化器哪个牌子吸毛好?希喂、IAM、352真实测评

前段时间忙活了个大工程——热门宠物空气净化器大横评&#xff0c;通过多方位的测试&#xff0c;帮助不少朋友解决了宠物空气净化器的选购难题。 但我们还不局限于此&#xff0c;在从事家电行业这些年间&#xff0c;我们还花费大价钱购置一堆产品实测体验过各类大小家电产品&a…

Spring Boot教学资源库:从入门到精通

1绪 论 1.1研究背景 目前&#xff0c;在网络大环境下&#xff0c;越来越多高校开始实行网络教学&#xff0c;利用网络教学方式有利于学生更好的学习。 网络教学是指以计算机及网络为基础&#xff0c;来实现教学资源的上传、存储、传播和共享的教学手段。它是一种教学活动&#…

PyQt5 基于paho-mqtt库 实现MQTT通信

PyQt5 基于paho-mqtt库 实现MQTT通信 paho-mqtt安装paho-mqtt库综合示例错误处理 paho-mqtt paho-mqtt官网文档 安装paho-mqtt库 pip install paho-mqtt 综合示例 封装MQTT类订阅消息发布消息信号方式接收处理MQTT消息 import paho.mqtt.client as mqtt import sys import …

在线绘图工具drawio,visio的平替

Draw.io&#xff1a;灵活高效的在线绘图工具推荐 在工作和项目管理中&#xff0c;流程图、架构图和思维导图等可视化图表是非常重要的沟通工具。Draw.io&#xff08;现更名为diagrams.net&#xff09;是一个强大且免费的在线绘图工具&#xff0c;适用于创建各种类型的图表。它功…

YOLOv11训练自己的数据集,YOLOv11网络解析

1 训练自己的数据集 在github搜索ultralytics并下载。 GitHub - ultralytics/ultralytics: Ultralytics YOLO11 &#x1f680; 环境配置不再赘述&#xff0c;本地配置自行搜索教程&#xff0c;若使用云服务器配置更为简单。 数据标注 pip install labelimg启动标注工具 la…

【PGCCC】在 Postgres 上构建图像搜索引擎

我最近看到的最有趣的电子商务功能之一是能够搜索与我手机上的图片相似的产品。例如&#xff0c;我可以拍一双鞋或其他产品的照片&#xff0c;然后搜索产品目录以查找类似商品。使用这样的功能可以是一个相当简单的项目&#xff0c;只要有合适的工具。如果我们可以将问题定义为…

Pycharm设置相同变量的背景颜色

在 PyCharm 中设置鼠标点击某个变量时&#xff0c;代码其他地方相同变量的背景颜色&#xff0c;可以通过调整颜色方案中的相关设置来实现。以下是详细步骤&#xff1a; 打开 PyCharm&#xff0c;选择 File -> Settings&#xff08;在 Windows/Linux 上&#xff09;或 PyChar…