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

ABC432E sol

eazy ds problem.

题意

给你一个序列 $a$,需要支持单点加 & 全局求 $\max\left(l,\min(r,a_i)\right)$(也就是对于每个 $a_i$,当 $a_i<l$,造成 $l$ 的贡献;当 $a_i \ge r$ 时,造成 $r$ 的贡献;否则造成 $a_i$ 的贡献。)

题解

注意到 $a_i,b_i \le 5\times 10^5$,所以可以考虑使用两个权值树状数组(也就是一个树状数组做的桶)(这两个树状数组下文中分别称为 $sum$ 和 $cnt$)分别维护 $\sum\limits^k_{a_i \le k} a_i$ 以及 $\sum\limits^k_{a_i \le k} cnt_{a_i}$($cnt_i$ 为 $i$ 出现次数)。
然后就容易了。

  • 单点加就是单点修改 $sum_{a_x},cnt_{a_x},sum_y,cnt_y$。

  • 查询时需要特判 $l>r$ 输出 $nl$,否则

    • 对于所有小于 $l$ 的数,它们对和造成的贡献都是 $l$;
    • 对于所有大于 $r$ 的数,它们对和造成的贡献都是 $r$;
    • 其它数,它们对答案的贡献为它本身。

    发现前两类贡献用 $cnt$ 维护、最后一类贡献用 $sum$ 维护即可。

所以,我们在 $O((n+q) \log V)$ 的复杂度解决了此题。

注意:由于 query 可能访问到 $0$ 和 $-1$,所以下标通通 $+2$。

代码

#include<bits/stdc++.h>
#define int long long
#define rep(i,l,r) for(int i=l;i<=r;i++)
using namespace std;
int tr[500005],a[500005];
struct fenwick{int tr[500015];void upd(int x,int y){x+=2;while(x<=500005) tr[x]+=y,x+=x&-x;}int que(int x){x+=2;int r=0;while(x) r+=tr[x],x&=x-1;return r;}	
}cnt,sum;
signed main(){int n,q;cin>>n>>q;rep(i,1,n) cin>>a[i],cnt.upd(a[i],1),sum.upd(a[i],a[i]);while(q--){int op,x,y;cin>>op>>x>>y;if(op==1){cnt.upd(a[x],-1),cnt.upd(y,1);//删除 a_x,增加 ysum.upd(a[x],-a[x]),sum.upd(y,y);//删除 a_x,增加 ya[x]=y;}else{if(x>y) cout<<n*x<<"\n";//特判else cout<<(cnt.que(x-1)*x+(n-cnt.que(y))*y)+sum.que(y)-sum.que(x-1)<<"\n";// <l 的数的贡献;>r 的数的贡献;l~r 的数的贡献。}}return 0;
}
http://www.jsqmd.com/news/41349/

相关文章:

  • 完整教程:linux离线环境局域网远程ssh连接vscode
  • 01命题逻辑的基本概念
  • 鲜花:记梦4
  • 第26天(简单题中等题 二分查找、贪心算法)
  • invalid literal for int() with base 10: abc中的base 10是什么意思? 另外它是怎么知道abc的?
  • byd秘钥 - MKT
  • NSubstitute之Substitute.ForT
  • DAY1 JAVA PreLearning
  • 【服务器】服务器被攻击植入了挖矿病毒,CPU一直占用100%,@monthly /root/.cfg/./dealer病毒清除 - 实践
  • 动态规划实践:数字三角形问题分析
  • 第4章 AI项目管理新范式:从交付功能到交付价值
  • 牛客101:链表 - 教程
  • LNCPC 2025 游寄
  • 第3章 传统项目管理在AI中的局限
  • Python 异常处理全面详解(附丰富实例)
  • IServiceCollection和IServiceProvider
  • multisim 13 Problem: Accessing the database解决办法
  • 完整教程:Redis 事务机制:Pipeline、ACID、Lua脚本
  • Python 一维数据、二维数据及 CSV 文件操作全解析(附实例)
  • 银行核心账户体系、账务设计、会计核心(整合版)
  • 斐波那契数列相关恒等式
  • Python 文件操作全面详解:从基础到进阶(附丰富实例)
  • 银行中外汇的由来(金融产品经理必读)
  • AI元人文框架:意义世界的探索引擎
  • abc432
  • 20232310 2025-2026-1 《网络与系统攻防技术》实验五实验报告
  • 实用指南:开源 Linux 服务器与中间件(七)数据库--MySQL
  • 版本控制与GitLab完整实践指南 - 指南
  • 利用Myo臂环采集肌电信号和角速度来建立实时手势识别
  • [MySQL] 基础操控