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

Codeforces Round 700 (Div. 1)_B2. Painting the Array II

传送门

做法一:首先将给定数组重复的数删掉。对于最近的两个相同的数,令其位置为\([l,r]\),看作是覆盖区间\([l,r]\)的一条线段。那么对于当前数组的若干条线段,若保留该线段,则代表这两个数涂相同颜色且在该颜色下相邻。发现若一个线段完全包含另一条线段,则一定选小的线段更优。对于两条不完全包含但是有重复区间的线段\([l_{1},r_{1}]\)\([l_{2},r_{2}]\),令\(l_{1} \leq l_{2}\),若\(l_{2} < r_{1}-1\),则\(l_{2}+1,r_{1}-1\)之间一定有别的数,会导致其中一条线段无法被选择,故此时选择左端点更小的更优。

做法二:同样首先将给定数组重复的数删掉。若用DP解决,显然不能令\(dp_{i,0/1}\)表示第\(i\)个数涂黑/白的最小答案,因为这样会导致状态难以转移。令\(dp_{i}\)表示\(i\)这个位置作为颜色分界点的最小答案,即\(b_{i} ≠ b_{i-1}\),此时转移变得简单:

\(dp_{i}=min(dp_{j}+(i-j-1)+[a_{j-1}≠a_{i}])\)

暴力转移是不对的。化简一下式子:发现\(i\)是常量,将其移到左边:

\(dp_{i}-i=min(dp_{j}-j-1+[a_{j-1}≠a_{i}])\)

貌似只需要维护\(dp_{i}-i\)这个值,然后就可以直接转移过来了,但是还有\([a_{j-1}≠a_{i}]\)这个东西。可以用一个桶来储存,\(vt_{i}\)表示\(a_{j-1}=i\)时最小的\(dp_{j}-j\),这样貌似能够通过维护查询区间最小值来转移,但是还能优化为\(O(n)\)

假定当前\(a_{i}\)第一次出现,则有\(dp_{i}-i=dp_{i-1}-(i-1)\),即\(dp_{i-1}-(i-1)\)已经代表了在没有数与\(a_{i}\)相同的情况下的\(min(dp_{j}-j-1+[a_{j-1}≠a_{i}])\)

而若存在与当前数相同,则利用前面维护的桶再取个最小值即可。

//Codeforces Round 700 (Div. 1)_B2. Painting the Array II
#include<bits/stdc++.h>
#define int long longusing namespace std;const int N = 5e5 + 10;
const int inf = 1e18;
int n,a[N];void solve() {cin >> n;for(int i = 1;i <= n;i++) cin >> a[i];int nn = unique(a + 1,a + 1 + n) - a - 1;vector<int> vt(n + 10,inf);vector<int> dp(n + 10);for(int i = 1;i <= nn;i++) {dp[i] = i + (dp[i - 1] - (i - 1));dp[i] = min(dp[i],vt[a[i]] + i - 1);vt[a[i - 1]] = min(vt[a[i - 1]],dp[i] - i);}int ans = inf;for(int i = 1;i <= nn;i++) ans = min(ans,dp[i] + nn - i);cout << ans << '\n';
}signed main() {ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int t = 1;while(t--) solve();return 0;
}
http://www.jsqmd.com/news/354602/

相关文章:

  • 2026年评价高的江苏重型螺母/江苏六角螺母厂家实力与用户口碑参考 - 行业平台推荐
  • 2026年长白山亲子酒店终极评测(权威机构双重背书)家庭选型避坑全指南 - 品牌推荐
  • 标题:北京加急就医|守嘉陪诊速约,急病不耽误,高效又省心 - 品牌排行榜单
  • 北京老年陪诊|守嘉陪诊贴心陪护,就医路上不孤单! - 品牌排行榜单
  • 2026年长白山亲子酒店推荐:多维实测与口碑评价,针对安全隐忧与性价比痛点精准指南 - 品牌推荐
  • 思看科技客户案例有哪些行业?覆盖汽车航空等15+行业深度解析! - 匠言榜单
  • 2026年口碑好的金属水性漆/防锈水性漆厂家选购全指南(完整版) - 行业平台推荐
  • 北京上班族就医代办|守嘉陪诊代跑腿+陪诊,不耽误工作! - 品牌排行榜单
  • 区块链商业价值预测数据分析
  • 100 万token!Anthropic 重磅发布 Claude Opus 4.6,成功登顶编程王座
  • 2026年PVC泄水管加工厂服务好的推荐有哪些 - 工业品网
  • 探寻二氢槲皮素品牌,哪家口碑好又性价比高 - myqiye
  • ops-cv NMS后处理硬件排序单元调用与阈值优化实战
  • 2026年耐用型桥梁PVC排水管口碑品牌推荐,快来了解 - 工业品牌热点
  • 北京加急就医|守嘉陪诊速约,急病不耽误,高效又省心 - 品牌排行榜单
  • 二氢槲皮素品牌推荐哪家,润葆国肽二氢槲皮素符合需求吗 - mypinpai
  • ops-transformer RoPE位置编码 复数旋转硬件加速实战
  • 聊聊PVC排水管实力供应商,江苏靠谱的厂家费用多少钱 - 工业推荐榜
  • 深入解析:Blender微细节纹理材质模型资产包 Micro-Details Premium Asset Pack
  • 聊聊山东专业的GEO优化公司机构,服务区域覆盖济南河南河北 - 工业设备
  • 【金融项目实战】10_接口测试 _接口Mock测试的作用
  • 2025年OE SCI2区TOP,面向复杂三维海上风电海域救援的多无人机协同路径规划,深度解析+性能实测
  • 2026年DeepSeek写论文AI痕迹太明显?一键去AIGC痕迹实测 - 我要发一区
  • 探寻桥梁PVC排水管优质厂家,广东地区哪家值得选 - 工业品牌热点
  • 2026年长白山亲子酒店推荐:通过设施实测与服务质量评测,解决空间局促与活动匮乏问题 - 品牌推荐
  • 2026年浙江口碑好的桥梁带检查口PVC排水管服务商排名 - 工业品网
  • 2026年比较好的预制钢结构工程/预制钢结构定制厂家选购指南与推荐 - 行业平台推荐
  • 计算机毕业设计springboot电竞酒店信息管理系统 基于SpringBoot的电竞主题酒店运营服务平台 SpringBoot框架下智能电竞住宿预订与管理系统
  • 2026年口碑好的大棚PE布/防寒PE布厂家推荐及采购指南 - 行业平台推荐
  • 计算机毕业设计springboot书海拾梦 墨香书苑 —— 基于SpringBoot的在线图书阅读与推荐平台 阅界云书 —— 智能图书推荐与文学交流社区