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

CF Median Splits (中位数映射+前缀和)

https://codeforces.com/contest/2103/problem/C

思路:要判断一个数组的中位数是否小于等于k,意味着这个数组需要至少ceil(m/2)个数是小于等于k的,我们不妨将小于等于k的数映射为1,大于k的数映射为-1,如果一个区间和满足大于等于0,那么其(小于等于k的个数)一定大于等于(大于k的个数),所以我们可以使用前缀和快速计算出子段和,这道题要我们划分三个区间,取每个区间的中位数,然后对这三个数取中位数要求结果<=k,所以至少要有两个区间的和是>=0的,三个区间的位置是左 中 右,我们可以先判断左 右两个区间是否满足,若不满足 接着判断 中  右,这里我们可以维护一个前缀和最小值,使“中”区间右端点i的前缀和-前缀和最小值 尽可能>=0,若此时中区间右端点对应i位置,那么右区间左端点对应i+1位置,其区间和为suf[i+1]对应的后缀和。最后一种情况是 判断 左 中两个区间是否满足 ,与前面提到的方法一样,这里不过多赘述。

Code:

void solve()
{int n,k;cin>>n>>k;vector<int> a(n+1),pre(n+1,0),suf(n+2,0);for(int i=1;i<=n;i++ ){cin>>a[i];a[i]=(a[i]>k?-1:1);pre[i]=pre[i-1]+a[i];}suf[n]=a[n];for(int i=n-1;i>=1;i--) suf[i]=suf[i+1]+a[i];int l=1,r=n;while(l<=n&&pre[l]<0) l++;while(r>=1&&suf[r]<0) r--;if(l<r){cout<<"YES"<<endl;return ;}    int mind=pre[1];for(int i=2;i<=n;i++){if(pre[i]-mind>=0&&i+1<=n&&suf[i+1]>=0){cout<<"YES"<<endl;return ;}mind=min(mind,pre[i]);}mind=suf[n];for(int i=n-1;i>=1;i--){if(suf[i]-mind>=0&&i-1>=1&&pre[i-1]>=0){cout<<"YES"<<endl;return ;}mind=min(mind,suf[i]);}cout<<"NO"<<endl;}

http://www.dtcms.com/a/411135.html

相关文章:

  • LeetCode算法日记 - Day 53: 验证二叉搜索树、二叉搜索树的第K小元素
  • 前端Mock工具有哪些?常用前端Mock工具推荐、前端接口模拟工具对比与实战经验
  • 招聘网站排名网站建设家居
  • 【自然语言处理与大模型】RAG发展过程中的三个范式
  • 华为纯血鸿蒙系统怎么安装物联通
  • 基于 PyTorch 的 CIFAR-10 图像分类实践
  • 专业的新乡网站建设深圳企业网站建设专业
  • 旅游网站论文不让网站在手机怎么做
  • DeepSeek-V3.1最终版,DeepSeek-V3.1-Terminus来了!
  • 若依前后端分离版实现前端国际化步骤
  • 做游戏本测评的网站合肥建设局网站首页
  • PyTorch深度学习快速入门--B站小土堆笔记
  • 【论文阅读笔记】VeloCycle
  • OpenSpeedy简介
  • 【论文阅读 | IF 2025 | LFDT-Fusion:潜在特征引导的扩散 Transformer 模型在通用图像融合中的应用】
  • 网网站建设站建设做推广优化的网站有哪些
  • 企业建设网站个人总结网站内容与目录结构图
  • 软考中级习题与解答——第十三章_数据库分析与设计(1)
  • 2025 PHP7/8 实战入门:15 天精通现代 Web 开发——第 15 课:项目实战与部署
  • RNA甲基化技术如何选择?
  • 网站建设与运营实验上海环球金融中心
  • 高斯分布及其线性变换
  • silverlight做的网站英文网站做百度权重有意义吗
  • 宁波网站推广报价南京网站定制
  • Linux开发工具入门:零基础到熟练使用(二)
  • kafka-日志收集平台部署项目
  • 郑州建站推广公司太原市制作网站
  • 学习:uniapp全栈微信小程序vue3后台(28)
  • 如何提高网站流量公众号推广代理
  • 怎么自己做淘宝客网站吗.net响应式网站模板