CF868F题解

news/2025/9/29 21:57:43/文章来源:https://www.cnblogs.com/PenguinJ/p/19119615

先考虑朴素的暴力,设 \(f_{k,i}\) 表示前 \(i\) 个数划分为 \(k\) 段的最小代价,有 \(f_{k,i}=\min_j\{f_{k-1,j-1}+w(j,i)\}\) ,其中, \(w(x,y)\) 表示 \([x,y]\) 中相同元素的对数。

可以先在外层枚举 \(k\) ,考虑如何处理 \(f_i\) 的转移。记数组 \(g\) 为枚举上一个 \(k\) 时的 \(f\) 。假设有转移决策点 \(u\)\(v,u<v\) ,假设 \(i\)\(v\) 转移,则有\(g_v+w(v+1,i)<g_u+w(u+1,i)\) ,由于区间 \([u+1,i]\) 中的数的种类不少于区间 \([v+1,i]\) ,所以\(w(u+1,i+1) \geq w(v+1,i+1)\) ,即 \(g_v+w(v+1,i+1)<g_u+w(u+1,i+1)\) ,也就是说,对于大于 \(i\) 的点,都不会从 \(u\) 转移,即 \(f_i\) 具有决策单调性。

考虑整体二分。待转移区间 \([l,r]\) ,和决策点区间 \([fl,fr]\) ,对于 \([l,r]\) 的中点 \(mid\) ,暴力的找出其对应的决策点 \(pos\) ,然后递归处理即可。

如何计算 \(w(x,y)\) ,可以使用类似莫队的东西去维护,均摊下来复杂度是 \(O(1)\) 的。

总的复杂度就是 \(O(kn\log n)\) 的。

代码:

#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll n,k,a[100005],f[100005],g[100005],cnt[100005],ml,mr,w;
inline void add(ll x){if(x)w+=cnt[a[x]],cnt[a[x]]++;}
inline void del(ll x){if(x)cnt[a[x]]--,w-=cnt[a[x]];}
inline void move(ll l,ll r){while(mr<r)add(++mr);while(ml>l)add(--ml);while(mr>r)del(mr--);while(ml<l)del(ml++);
}
void solve(ll l,ll r,ll fl,ll fr){if(fl==fr){	for(ll i=l;i<=r;i++){move(fl,i);f[i]=g[fl-1]+w;}return ;}ll mid=(l+r)>>1,pos,minn=1e16;for(ll i=fl;i<=min(fr,mid);i++){move(i,mid);ll v=g[i-1]+w;if(v<=minn)minn=v,pos=i;}f[mid]=minn;if(l==r)return ;solve(l,mid,fl,pos);solve(mid+1,r,pos,fr);
}
int main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin>>n>>k;for(ll i=1;i<=n;i++){cin>>a[i];g[i]=g[i-1]+cnt[a[i]];cnt[a[i]]++;}memset(cnt,0,sizeof(cnt));w=0;for(ll i=2;i<=k;i++){solve(1,n,1,n);for(ll j=1;j<=n;j++)g[j]=f[j];}cout<<g[n];return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/922282.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ThinkPHP反序列化分析

ThinkPHPv5.0.x反序列化利用链 前言 漏洞测试环境: php 7.3 + Windows + ThinkPHPv5.0.23 漏洞测试代码: index/controller/Index.php <?php namespace app\index\controller;class Index {public function index(…

建设京东物流网站的目标是什么广州网站排名专业乐云seo

VScode 国内下载源 进入官网 https://code.visualstudio.com/ 点击下载 复制下载链接到新的浏览器标签 将地址中的/stable前的az764295.vo.msecnd.net换成vscode.cdn.azure.cn&#xff0c;再回车就会直接在下载列表啦。 参考大神博客 2.使用nvm 对 node 和npm进行版本控制…

AT_iroha2019_day4_l 题解

题意:有一个数轴, \(Q\) 次操作,三种操作类型:1.在位置为 \(x\) 处插入权值为 \(w\) 的数,不会在有数的位置重复插入。 2.删除位置 \(x\) 处的数,保证删前 \(x\) 处有数。 3.给定位置 \(x\) ,对于一个数轴上有数…

怎么在工商网站做实名认证推广效果好的有哪些

想要在前端项目中压缩图片&#xff0c;然后再上传到后端保存&#xff0c;就需要一个压缩工具的帮助&#xff0c;暂时有两个依赖库可以选择&#xff1a;image-conversion和yireen/squoosh-browser&#xff0c;看了官方仓库地址和更新时间等详情&#xff0c;发现还是yireen/squoo…

兰州建设局网站公告wordpress Cute

1.你先作个自我介绍吧 面试官您好&#xff0c;我叫张睿超&#xff0c;来自湖南长沙&#xff0c;大学毕业于湖南农业大学&#xff0c;是一名智能科学与技术专业的统招一本本科生。今天主要过来面试贵公司的Java后端开发工程师岗位。 大学里面主修的课程是Java、Python、数字图…

做前端网站要注意哪些网站建设模板怎么设计

注解的存在主要是为了简化XML的配置。Spring6倡导全注解开发。 注解开发的优点:提高开发效率 注解开发的缺点:在一定程度上违背了OCP原则&#xff0c;使用注解的开发的前提是需求比较固定&#xff0c;变动较小。 1 注解的注解称为元注解 自定义一个注解: package com.sunspl…

企业报刊网站建设情况总结阿里网站seo

第一部分&#xff1a;跨界电商的兴起与网络安全挑战 1.1 跨界电商的崭露头角 跨界电商已经成为全球贸易的新引擎&#xff0c;企业纷纷踏上了拓展国际市场的征程。 1.2 网络安全的不容忽视 跨界电商的增长也伴随着网络安全威胁的增加。黑客攻击、数据泄露和欺诈行为等风险呈…

不符合网站外链建设原则的是个人备案网站能用公司

文章目录 前言音频服务audioserver音频数据链路hal 提供什么样的作用 前言 Android 的音频是一个相当复杂的部分。从应用到框架、hal、kernel、最后到硬件&#xff0c;每个部分的知识点都相当的多。而android 这部分代码在版本之间改动很大、其中充斥着各种workaround的处理&a…

摄影学习网站连云港市建设局网站安全员考试

文章目录 前言一、安装与运行命令行运行 python 文件 二、变量和简单数据类型2.1 变量命名规则2.2 字符串2.2.1 字符串的简单运算title()upper()、lower() 2.2.2 合并&#xff08;拼接&#xff09;字符串2.2.3 使用制表符或换行符来添加空白2.2.4 删除空白2.2.5 Python 2 中的 …

北京seo网站内部优化电子商务网站建设的定义

随着科技的不断进步和创新&#xff0c;无人机技术在各个领域中都发挥着越来越重要的作用。其中&#xff0c;光伏电站对于无人机的应用也成为了行业内的高效运维方式之一&#xff0c;凭借无人机卓越的性能和可靠性&#xff0c;有效的减少了人力运维的危险性和延迟性&#xff0c;…

2025.9.29

今天又是非常疲惫的周一,一天都是满课,上午两节,下午三个半小时,上完课之后我去好想来买零食,回来时候拿外卖,吃完饭后去洗澡,然后录下午课的视频。

网站开发使用的工具类做网站的技术理论

const用法主要是防止定义的对象再次被修改,定义对象变量时要初始化变量 下面我就介绍一下几种常见的用法 1.用于定义常量变量,这样这个变量在后面就不可以再被修改 const int Val 10; //Val 20; //错误,不可被修改 2. 保护传参时参数不被修改,如果使用引用传递参数或按地址传…

网站开发的语言做网站个人

From: http://www.cnblogs.com/caosiyang/archive/2012/08/21/2648870.html printf()和fprintf()这些输出函数的参数是可变的&#xff0c;在调试程序时&#xff0c;你可能希望定义自己的参数可变的输出函数&#xff0c; 那么可变参数宏会是一个选择。 C99中规定宏可以像函数…

深入解析:前端笔记:HTML output标签介绍及用法

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

成都网络推广建站深圳华强北商业圈

使用基于全球知名的 Corel Painter 画笔技术构建的 100 款逼真像素画笔&#xff0c;以全新的方式将您独特的想法变为现实&#xff01;试用 CorelDRAW 的全新美术画笔&#xff0c;探索您的创意想法。 使用 CorelDRAW 中现在可用的远程字体&#xff0c;畅享更多创作自由&#xf…

无锡网站程序北京设计公司招聘信息

前言 在《Unix网络编程》一书中提到了五种IO模型&#xff0c;分别是&#xff1a;阻塞IO、非阻塞IO、IO复用、信号驱动IO以及异步IO。本篇文章主要介绍IO的基本概念以及阻塞IO、非阻塞IO、IO复用三种模型&#xff0c;供大家参考学习。 一、什么是IO 计算机视角理解IO: 对于计…

设计模版网站wordpress侧栏插件

1.获取SDK&#xff0c;并写入常量表 2.引入MiPush_SDK_Sever.jar文件和json-simple-1.1.1.jar 3.开发服务端代码&#xff08;这里是用别名进行推送&#xff09; /*小米推送*//** * 指定alias推送(单个或多个) * * param messagePayload 消息 * param title 消息标题 *…

如何创建一个自己的平台北京网站建设 优化

题目&#xff1a; $num$_GET[num]; if(!is_numeric($num)) { echo $num; if($num1) echo flag{**********}; }关键在于绕过is_numeric&#xff0c;PHP中字符串与数字弱比较&#xff0c;会将字符串转换为数字&#xff0c;截至到非数字字符&#xff0c;如果第一个字符就是非数字…

Linux CentOS 7 安装 zip-3.0-11.el7.x86_64.rpm 详细步骤(命令行教程)​(附安装包)

Linux CentOS 7 安装 zip-3.0-11.el7.x86_64.rpm 详细步骤(命令行教程)​(附安装包)​一、先确认你的系统是 CentOS 7 或 RHEL 7 这个包名字里有 el7,说明它是专门给 ​CentOS 7​ 或者 ​RHEL 7​ 用的。如果你不是…

网站开发logo关键字排名优化工具

三星有子初长成气宇轩昂 秀美俊逸减之一分则嫌柔增之一分则嫌赘2019年8月7日于纽约巴克莱发布Galaxy Note 10系列用简约 重构美三星Galaxy Note 10与Galaxy Note 10分别搭载了6.3英寸和6.8英寸的超感官全视曲面屏&#xff0c;均采用单摄挖孔屏&#xff0c;开孔位于屏幕正上方。…