news 2026/7/11 20:04:25

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
复盘 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;
}

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/11 20:02:42

RUFI洗衣精华怎么选

选RUFI洗衣精华&#xff0c;不要先被香型名称带着走。更稳的顺序&#xff0c;是先看家里最常洗什么衣物&#xff0c;再看洗衣频率&#xff0c;最后才看自己喜欢哪种气味。这样选出来的产品&#xff0c;才不会买回去只在少数时候用得上。先定主洗产品如果家里主要是T恤、衬衫、睡…

作者头像 李华
网站建设 2026/7/11 20:00:56

工业负载控制:智能高侧开关与微控制器的实战应用

1. 工业负载控制的核心挑战与选型思路在工业自动化产线上&#xff0c;电机、继电器线圈、电磁阀等电感性负载与加热管、照明设备等电阻性负载的控制&#xff0c;一直是电气工程师的日常课题。不同于消费电子领域&#xff0c;工业环境对可靠性、抗干扰能力和长期稳定性有着近乎苛…

作者头像 李华
网站建设 2026/7/11 20:00:49

3人团队如何跑赢AI算力战?Cloud架构选型踩坑实录

从烧钱到省钱&#xff1a;我们的推理服务优化之路 去年为某跨境电商部署AI质检系统时&#xff0c;我们3人小团队在AWS上烧掉了47万GPU费用——直到发现流量波动时80%的vCPU处于闲置状态。现在同样规模的图像分类服务&#xff0c;我们的云成本降低了62%&#xff0c;这套架构已被…

作者头像 李华