尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

CF182C

CF182C
📅 发布时间:2026/6/19 7:23:28

根据贪心策略,应当选择 \(k\) 个最小的负数改为正数,或选择 \(k\) 个最大的正数改为负数,才可能使答案最大。那么可以先把数按正负分开,并确定每个数在同符号数中的排名。建立权值线段树,记录每个数出现的次数、单个数大小、总贡献和,查询时类似线段树二分,如果数值较大的区间不够用,就往数值较小的区间递归,否则在其内部递归。循环时分别维护当前的正数和、负数和。时间复杂度 \(O(n\log n)\)。

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#define N 200010
#define int long long
using namespace std;
struct node{int val,siz,v;
};
struct T{node t[N*4];void pushup(int u){t[u].val=t[u<<1].val+t[u<<1|1].val;t[u].siz=t[u<<1].siz+t[u<<1|1].siz;}void upd(int u,int l,int r,int p,int v,int ki){if(l==r){t[u].v=v;t[u].siz+=ki;t[u].val=t[u].siz*v;return;}int mid=(l+r)>>1;if(p<=mid)upd(u<<1,l,mid,p,v,ki);if(p>mid)upd(u<<1|1,mid+1,r,p,v,ki);pushup(u);}int que(int u,int l,int r,int nw){if(l>r||nw==0)return 0;// cout<<l<<' '<<r<<endl;if(l==r)return t[u].v*min(t[u].siz,nw);int mid=(l+r)>>1;if(t[u<<1|1].siz>=nw)return que(u<<1|1,mid+1,r,nw);else return t[u<<1|1].val+que(u<<1,l,mid,nw-t[u<<1|1].siz);}
}tp,tn;
struct L{int val,ki,id;
}a[N];
int n,len,pm,nm,k,pa[N],na[N],sp,sn,ans;
void modify(int i,int val){if(a[i].ki==-1)tn.upd(1,1,nm,a[i].id,a[i].val,val);if(a[i].ki==1)tp.upd(1,1,pm,a[i].id,a[i].val,val);
}
signed main(){cin>>n>>len;for(int i=1;i<=n;i++){cin>>a[i].val;if(a[i].val<0)a[i].val*=-1,a[i].ki=-1,na[++nm]=a[i].val;else if(a[i].val>0)a[i].ki=1,pa[++pm]=a[i].val;}cin>>k;sort(pa+1,pa+pm+1);sort(na+1,na+nm+1);nm=unique(na+1,na+nm+1)-na-1;pm=unique(pa+1,pa+pm+1)-pa-1;for(int i=1;i<=n;i++){if(a[i].ki==-1)a[i].id=lower_bound(na+1,na+nm+1,a[i].val)-na;if(a[i].ki==1)a[i].id=lower_bound(pa+1,pa+pm+1,a[i].val)-pa;// cout<<i<<' '<<a[i].id<<endl;}for(int i=1;i<len;i++){modify(i,1);if(a[i].ki==-1)sn+=a[i].val;else sp+=a[i].val;}for(int i=1;i+len-1<=n;i++){int j=i+len-1;modify(j,1);if(a[j].ki==-1)sn+=a[j].val;else sp+=a[j].val;// cout<<1<<endl;ans=max(ans,abs(sn+tp.que(1,1,pm,k)-(sp-tp.que(1,1,pm,k))));ans=max(ans,abs(sp+tn.que(1,1,nm,k)-(sn-tn.que(1,1,nm,k))));// cout<<i<<' '<<j<<' '<<sn<<' '<<sp<<' '<<abs(sn+tp.que(1,1,pm,k)-(sp-tp.que(1,1,pm,k)))<<' '<<abs(sp+tn.que(1,1,nm,k)-(sn-tn.que(1,1,nm,k)))<<endl;modify(i,-1);if(a[i].ki==-1)sn-=a[i].val;else sp-=a[i].val;}cout<<ans;return 0;
}
我们会走到一起的。

相关新闻

  • CF201C
  • CF33D
  • 【A】杂题悬桨

最新新闻

  • swipe终极指南:如何在Jetpack Compose中实现专业级滑动操作
  • Flop与GraphQL/Relay集成:构建现代化API的完整方案
  • Paralayout AspectRatio实战:轻松处理宽高比布局的完整教程
  • Pike与主流IAC工具集成指南:Terraform、CloudFormation最佳实践
  • 2026年值得信赖的安全教育培训机构推荐,实力与口碑双优之选 - mypinpai
  • Markoff:macOS上终极轻量级Markdown预览器完全指南

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号