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

CF958F2 Lightsabers (medium)题解

题解

1.题意

自己看吧,懒得总结了

2.思路

考虑二分

首先,我们可以先选出我们要的区间,再去进行删数

删数十分好做,第 \(i\) 个颜色需要删 \(当前第i个数出现次数-k_i\)

接下来想一想如何选出最优的区间

我们肯定是希望在每个数出现次数不小于 \(k_i\) 的前提下,让区间尽可能的小

那我们可以二分 \(n-区间长度\) (主要是在check时要做的是删数后判断是否满足条件)

在每一次check里,我们需要枚举缩区间的时候删的是哪些数

这我们可以动态更新

首先假设当前二分的\(mid\)\(x\)

所以先假设缩区间删除的是前 \(x\) 个数

这我们可以先统计

接下来,把区间变为删前 \(x-1\) 个数和最后一个数,可以O(1)更新是否满足条件

然后一直这样往左移动区间,就能统计出是否能够合法了

整体复杂度O(n log n)

3.Code

#include<bits/stdc++.h>using namespace std;
int n,m,k[200010],a[200010],cnt[200010],vis[200010],temp[200010],anscnt[200010];
int check(int x){int flag=0;for(int i=1;i<=n;i++)temp[a[i]]=cnt[a[i]];for(int i=1;i<=x;i++){cnt[a[i]]--;if(cnt[a[i]]==k[a[i]]-1)flag++;}//cout<<flag<<";\n";if(flag==0)return 1;for(int i=1;i<=x;i++){cnt[a[x-i+1]]++;if(cnt[a[x-i+1]]==k[a[x-i+1]])flag--;cnt[a[n-i+1]]--;if(cnt[a[n-i+1]]==k[a[n-i+1]]-1)flag++;//cout<<flag<<";\n";if(flag==0)return 1;}return 0;
}
main(){cin>>n>>m;for(int i=1;i<=n;i++)cin>>a[i],cnt[a[i]]++,anscnt[a[i]]++;for(int i=1;i<=m;i++)cin>>k[i];for(int i=1;i<=m;i++){if(k[i]>cnt[i]){cout<<-1;return 0;}}int l=1,r=n;while(l<=r){int mid=(l+r)>>1;//cout<<mid<<endl;if(check(mid)){l=mid+1;for(int i=1;i<=n;i++)anscnt[a[i]]=cnt[a[i]];for(int i=1;i<=n;i++)cnt[a[i]]=temp[a[i]];}else{r=mid-1;for(int i=1;i<=n;i++)cnt[a[i]]=temp[a[i]];}}int ans=0;for(int i=1;i<=n;i++){if(anscnt[a[i]]!=-1){ans+=anscnt[a[i]]-k[a[i]];anscnt[a[i]]=-1;}}cout<<ans;return 0;
}
http://www.jsqmd.com/news/425315/

相关文章:

  • 【AI渗透】——专为渗透测试工程师和安全研究员设计的新一代集成化安全测试平台(Venom)
  • 一款基于 .NET 开源免费、高效且用户友好文件搜索工具!
  • 基于粒子群算法的含分布式电源的主动配电网电压—有功-无功优化研究:以IEEE33节点为例
  • .Android Compose 基础系列:您的第一个 Kotlin 程序
  • 借助MongoDB实现大数据的分布式存储
  • MiniRAG + LLM (二)
  • 一文梳理清大数据领域CAP定理,轻松驾驭数据
  • 电动汽车充放电调度优化:全局与局部方案的比较及性能分析
  • 鸿蒙应用开发UI基础第十四节:文本显示组件Text核心讲解与实战演示 - 鸿蒙
  • Java求职面试实战:微服务与安全框架场景问题解析
  • 玩转STM32F1驱动双雄:BLDC与PMSM的攻防战
  • 从 Java 到 Go:一场性能革命
  • 使用C语言实现STM的启动文件
  • 探索大数据领域Doris的核心特性与优势
  • AI推理能力革命:如何打造高性能原生应用?
  • Android 开发问题:FileProvider: java.lang.SecurityException: Provider must not be exported
  • 大数据时代:用户画像助力企业精准营销
  • 使用 pkgutil 实现动态插件系统
  • 自注意力机制详解:从原理到计算过程
  • 东莞直饮水机服务商怎么选?靠谱服务商推荐 - 小坤哥
  • 记一次AI Agent开发的思维误区
  • 其他-vscode-配置
  • 最小二乘问题详解:线性最小二乘实例
  • ZooKeeper 的 Watcher 机制的底层实现
  • macos:从命令行启动device模拟器
  • 在手机上运行AI模型
  • 创新是改良式的(Incremental Innovation),但是,有些创新是颠覆式的(Disruptive Innovation ...
  • OpenClaw 安装与配置API教程(Mac电脑,超详细喂饭)
  • 【节点】[DielectricSpecular节点]原理解析与实际应用
  • 东莞直饮水机厂家怎么选?5家靠谱供应商推荐 - 小坤哥