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

复盘 SFLSOJ 20260707 coach 原题 CSU1913 一条龙送礼物

意到输出只有一个数,我们在头脑风暴中尝试二分求这个数。

问题变成求最小的数

x 使得


<


a
k

<=x。

我们把数组里的数分成

x 和
<
=

<=x,

x 用1表示,
<
=

<=x 用0表示,


<
=

a
k

<=x 就是替代操作完后


=
0
a
k

=0。

这时会发现,操作
1
1 就不需要排序了,因为操作完
1
1 就被挪到区间的左右两边了,
0
0 在中间,这个可以用区间修改完成,由此,我们就想到了线段树。复杂度

(




2

)
O(nlog
2
n)。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=5e5+9;
ll n,m,k,x[N],a[N],op1[N],op2[N],cnt;
struct Node{
ll l,r,sum,tag;
}tr[N4];
void pushup(ll u){
if(tr[u].l==tr[u].r) return;
tr[u].sum=tr[u
2].sum+tr[u2+1].sum;
}
void pushdown(ll u){
if(tr[u].ltr[u].r) return;
if(tr[u].tag
-1) return;
tr[u
2].sum=tr[u].tag*(tr[u2].r-tr[u2].l+1);
tr[u2+1].sum=tr[u].tag(tr[u2+1].r-tr[u2+1].l+1);
tr[u2].tag=tr[u].tag,tr[u2+1].tag=tr[u].tag;
tr[u].tag=-1;
}
void build(ll u,ll l,ll r){
tr[u].l=l,tr[u].r=r,tr[u].tag=-1;
if(lr){tr[u].sum=a[l];return;}
ll mid=(l+r)/2;
build(u2,l,mid);
build(u
2+1,mid+1,r);
pushup(u);
}
ll query(ll u,ll l,ll r){
pushdown(u);
if(r<tr[u].l||tr[u].r<l) return 0;
if(l<=tr[u].l&&tr[u].r<=r) return tr[u].sum;
return query(u2,l,r)+query(u2+1,l,r);
}
void upd(ll u,ll l,ll r,ll v){
pushdown(u);
if(r<tr[u].l||tr[u].r<l) return;
if(l<=tr[u].l&&tr[u].r<=r){
tr[u].sum=v*(tr[u].r-tr[u].l+1);
tr[u].tag=v;
return;
}
upd(u2,l,r,v);
upd(u
2+1,l,r,v);
pushup(u);
}
int main(){
freopen(“coach.in”,“r”,stdin);
freopen(“coach.out”,“w”,stdout);
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin>>n>>m>>k;
for(ll i=1;i<=n;i++) cin>>x[i];
for(ll i=1,op,l,r,val;i<=m;i++){
cin>>op;
if(op
1) cin>>l>>r,cnt++,op1[cnt]=l,op2[cnt]=r;
else cin>>val,cnt=max(0ll,cnt-val);
}
ll L=0,R=200000,mid,ans=200000;
while(L<=R){
mid=(L+R)/2;
for(ll i=1;i<=n;i++) a[i]=(x[i]>mid);
build(1,1,n);
for(ll i=1;i<=cnt;i++){
ll l=op1[i],r=op2[i],cnt1=query(1,l,r);
upd(1,l,l+(cnt1+1)/2-1,1);
upd(1,r-cnt1/2+1,r,1);
upd(1,l+(cnt1+1)/2,r-cnt1/2,0);
}
if(query(1,k,k)) L=mid+1;
else ans=mid,R=mid-1;
}
cout<<ans<<endl;
return 0;
}

http://www.cnnetsun.cn/news/3293015.html

相关文章:

  • RUFI洗衣精华怎么选
  • 电力通信现场作业 4 类安全措施实操指南:基于《安规》的 20+ 关键条款解读
  • 工业负载控制:智能高侧开关与微控制器的实战应用
  • 3人团队如何跑赢AI算力战?Cloud架构选型踩坑实录
  • 如何用嘎嘎降AI处理生物医学论文:生物医学毕业论文降AI4.8元知网达标完整教程
  • 心理学论文降AI工具免费推荐:2026年心理学毕业论文降AI免费4.8元亲测完整指南
  • 3步极速部署:TradingAgents-CN智能投资分析平台的完整实战指南
  • 【软考设计模式】策略模式:算法族的封装与动态切换精讲
  • 腾讯Hy3大模型实战:MoE架构解析与完整部署指南
  • C语言中的for循环,看这一篇就够了!
  • 终极指南:如何用GBFR Logs伤害统计工具优化《碧蓝幻想:Relink》团队输出
  • 多肽定制品纯度选择
  • PostgreSQL 19 Beta 值得测吗?并行 Autovacuum、REPACK 到 WAIT FOR LSN 看生产影响
  • 5分钟搞定华硕笔记本矩阵屏:用G-Helper打造专属动画与GIF播放效果
  • GTAIV.EFLC.FusionFix终极指南:如何让《侠盗猎车手4》焕发新生
  • 云固件 v1.6.23942 混合模式部署:3步完成UEFI+GPT本地硬盘引导集成
  • [CirclePupilAnimation节点]原理解析与实际应用
  • Neo4j Cypher 5.x 实战:3类复杂路径查询与性能调优对比
  • 3an推客超全常见问题答疑|电商运营新手必备实操指南
  • 为什么Playnite是游戏玩家的终极统一启动器?3步打造你的专属游戏中心
  • 直接序列扩频系统同步实战:滑动相关器捕获与延迟锁相环跟踪的2个关键步骤
  • Skill 太多、太乱、还不安全?还不知道哪些是适合自己行业的skill?只安装一个可信路由 Skill 就够了
  • FPGA UART 串口通信:3种电平标准(TTL/RS232/RS485)对比与选型指南
  • STM32F103C8T6 智能输液系统实战:红外滴速检测与步进电机PID控制
  • Visual C++运行库一键修复:3分钟彻底解决Windows软件启动问题的终极方案
  • 112、数据增强技巧:如何构建高质量的超分训练数据集
  • 绿盟一面面经分享
  • Claude Code国内可用指南:Node.js环境+CCSwitch路由配置实战
  • ubuntu 20.04 ros1 noetic环境复现 lego-loam 过程出现 mapOptmization-7] process has died 问题解决(个人经验)
  • HAC++:3D高斯泼溅模型超百倍压缩算法原理与实战部署