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

2023年icpc济南 Rainbow Subrarray

对于a[i+1]=a[i]+1的问题,通常做法都是b[i]=a[i]-i,这样问题就变成了找连续的相等数组。最小的操作数一定是把它变成该数组的中位数。经典问题了。找中位数可以用树状数组实现,在树状数组上二分即可。计算操作数可以分成两个部分计算,假设区间[l, r],中位数的下标为mid,中位数的值为val,以中位数为界,分成前后两部分,前面部分为 (mid - l + 1) * val - sum[l, mid],后面部分为sum[mid+1, r] - (r - mid) * val,其中sum[l, r]表示区间[l, r]的和。

#include<bits/stdc++.h> 
using namespace std;
typedef long long ll;
const long long inf=1e18;
const int N=5e5+10;
ll T;
ll n,m,k;
ll ans,a[N];
multiset <ll> s1,s2;
ll zuo,you,zhong;
bool jiou = 0;inline ll read() {ll sum = 0, ff = 1; char c = getchar();while(c<'0' || c>'9') { if(c=='-') ff = -1; c = getchar(); }while(c>='0'&&c<='9') { sum = sum * 10 + c - '0'; c = getchar(); }return sum * ff;
}void chushihua() {s1.clear(); s2.clear();s1.insert(-inf); s2.insert(inf);zuo = you = zhong = 0;jiou = 0;
}inline void add(ll x) {if(!jiou) {ll A = *(--s1.end());ll B = *s2.begin();if(A<=x && x<=B) { zhong = x; }else if(A>x) {s1.erase(s1.find(A));s1.insert(x);zuo += x-A;zhong = A;}else if(B<x) {s2.erase(s2.find(B));s2.insert(x);you += x-B;zhong = B;}}else {if(x>=zhong) {s1.insert(zhong); zuo += zhong;s2.insert(x); you += x;}else {s2.insert(zhong); you += zhong;s1.insert(x); zuo += x;}zhong = 0;}jiou ^= 1;
}inline void del(ll x) {ll A = *(--s1.end());ll B = *s2.begin();if(!jiou) {if(A>=x) {s1.erase(s1.find(x)); zuo -= x;s2.erase(s2.find(B)); you -= B;zhong = B;}else {s2.erase(s2.find(x)); you -= x;s1.erase(s1.find(A)); zuo -= A;zhong = A;}}else {if(zhong==x) {}else if(x>zhong) {s2.erase(s2.find(x));s2.insert(zhong);you += zhong-x;}else {s1.erase(s1.find(x));s1.insert(zhong);zuo += zhong-x;}zhong = 0;}jiou ^= 1;
}int main() {T = read();while(T--) {chushihua();n = read(); k = read();for(ll i=1;i<=n;i++) a[i] = read()-i;a[n+1] = inf;ll now = 1;ans = 1; add(a[1]); jiou = 1;for(ll i=1;i<=n;i++) {while(you-zuo<=k) { ans = max(ans,now-i+1); add(a[++now]); }del(a[i]);}cout<<ans<<endl;}return 0;
}
http://www.jsqmd.com/news/405045/

相关文章:

  • 低代码神器AutoGen Studio:Qwen3-4B应用开发实录
  • 手把手教你用nanobot搭建QQ智能客服:基于Qwen3-4B大模型
  • StructBERT情感分类模型:中性评论处理技巧分享
  • 保姆级教程:用Qwen3-ASR-1.7B快速搭建智能转录工具
  • 云容笔谈东方红颜生成稳定性报告:连续1000次生成中‘脸崩率’低于0.7%
  • OFA视觉蕴含模型部署教程:低显存(<12GB)GPU设备上的量化推理适配
  • 开箱即用:Qwen3-ASR-0.6B语音识别系统体验
  • Qwen3-ASR语音识别:5分钟快速部署30+语言识别服务
  • GLM-Image Web交互界面惊艳效果:复杂多主体场景(10+人物/建筑群)生成
  • BEYOND REALITY Z-Image提示词秘籍:自然肤质这样描述最有效
  • 让车学会礼让文化,不同地区不同礼让逻辑,颠覆固定规则,输出适配行为。
  • 使用RexUniNLU构建智能邮件分类与处理系统
  • 手把手教你用Qwen3-VL:30B打造企业多模态智能助手
  • Local AI MusicGen技巧:用Prompt调出专业级音乐效果
  • 千问可以做广告吗?联系谁? - 品牌2025
  • 24G显存也能用!BEYOND REALITY Z-Image高效部署指南
  • PasteMD与LangChain集成:构建智能文档处理流水线
  • Nano-Banana性能优化:基于CUDA的GPU加速技术实战
  • OFA视觉问答模型实战:手把手教你玩转图片问答
  • QAnything PDF解析实战:基于Python爬虫的文档自动化处理
  • Chord与LSTM模型集成:视频时序分析实战
  • Qwen3-TTS-12Hz-1.7B语音克隆伦理指南
  • Xinference-v1.17.1与MobaXterm配合使用:远程开发全攻略
  • 零代码玩转AI汉服画:霜儿-汉服-造相Z-Turbo开箱即用教程
  • MobX响应式深度解析
  • 文墨共鸣惊艳效果:留白墨韵中渐显朱砂印,强化用户对语义距离感知
  • 嵌入式系统集成TranslateGemma的低功耗优化方案
  • 2026高端卫浴品牌排行:技术服务与场景的综合之选 - 优质品牌商家
  • 手把手教你用Ollama部署DeepSeek-R1-Distill-Llama-8B:小白也能搞定
  • 本地AI创新工坊|NEURAL MASK幻镜与Stable Diffusion图像生成联动