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

AT F-Intervals 题解

简化题意:

nnn 个区间,保证所有区间同时覆盖一个点,每次将区间平移一个单位,问使得区间两两不交的最小操作数(端点处可重叠)。n≤5000。l,r≤231−1n\leq 5000。l,r\leq 2^{31}-1n5000l,r2311

思路:

答案区间一定是连续的一段。而且最优的情况一定是中间的区间不动,一半移向左,一半移向右。对于 nnn 为偶数的情况,选任意一个均可或新增一个(p,p)(p,p)(p,p) 区间。
先将区间按照长度从大到小排序。
不用枚举这个中间的区间,我们设 fi,j,0/1f_{i,j,0/1}fi,j,0/1 表示前 iii 个区间中 jjj 个向左移动,没选/选了中间的区间。
对于转移,我们分别转移到向左,向右和中间三个状态。
向左举例:fi+1,j+1,k=min(fi+1,j+1,k,fi,j,k+ai.r+ai.len×j)f_{i+1,j+1,k}=min(f_{i+1,j+1,k},f_{i,j,k}+a_i.r+a_i.len\times j)fi+1,j+1,k=min(fi+1,j+1,k,fi,j,k+ai.r+ai.len×j)。因为所有比它大的都要经过它,还需移动 a[i].ra[i].ra[i].r 使整个区间与左侧区间不交。
注意虽然本题 nnn500050005000,但向左的最多只会有一半,所以第二维开到一般即可,要不然容易MLE。
:::info[code]

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N=5005;
int n;
int L,R;
struct node{ll l,r,len;
}q[N]; 
ll f[N][N][2];
bool cmp(node x,node y){
//	if(x.len==y.len) return x.l<y.l;return x.len>y.len;
}
int main(){scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%lld%lld",&q[i].l,&q[i].r);//	q[i].l=-q[i].l; q[i].len=q[i].r-q[i].l;//点可重 }sort(q+1,q+1+n,cmp);memset(f,0x3f,sizeof f);L=n/2,R=(n-1)/2;f[0][0][0]=0;for(int i=0;i<n;i++){for(int j=0;j<=L;j++){//	if(i-j<0||i-j>R) continue;if(i-j>=0&&i-j<=R)f[i+1][j][1]=min(f[i+1][j][1],f[i][j][0]-q[i+1].l*L+q[i+1].r*R);if(j+1<=L){if(i-j-1>=0&&i-j-1<=R) f[i+1][j+1][1]=min(f[i+1][j+1][1],f[i][j][1]+q[i+1].r+q[i+1].len*j);if(i-j>=0&&i-j<=R)f[i+1][j+1][0]=min(f[i+1][j+1][0],f[i][j][0]+q[i+1].r+q[i+1].len*j);				}if(i-j<=R){if(i-j-1>=0&&i-j-1<=R) f[i+1][j][1]=min(f[i+1][j][1],f[i][j][1]-q[i+1].l+q[i+1].len*(i-j-1));}if(i-j+1<=R){if(i-j>=0&&i-j<=R)f[i+1][j][0]=min(f[i+1][j][0],f[i][j][0]-q[i+1].l+q[i+1].len*(i-j));}//	cout<<i<<" "<<j<<" "<<0<<" "<<f[i][j][0]<<endl; //	cout<<i<<" "<<j<<" "<<1<<" "<<f[i][j][1]<<endl; }}printf("%lld\n",f[n][L][1]);return 0;
} 

:::

http://www.xdnf.cn/news/17588.html

相关文章:

  • 深入理解数据库架构:从原理到实践的完整指南
  • DEA模型MATLAB实现(CCR、BCC、超效率)
  • 云原生应用的DevOps3(CI/CD十大安全风险、渗透场景)
  • LeetCode189~191、198~214题解
  • Day52 Java面向对象07 类与对象总结
  • 鸿蒙har包打包与引用,其它主工程entry引用本地har
  • 【19】万集科技——万集科技嵌入式,校招 一面,二面,面试问答记录
  • 【基于Redis的手语翻译序列存储设计】
  • 淘宝API列表:高效获取商品详情图主图商品视频参数item_get
  • Flutter path_provider的基本使用(读写文件)
  • 车规级霍尔开关芯片SC25891 | 为汽车安全带扣筑起高可靠性安全防线
  • 【MySQL】MySQL聚集索引与非聚集索引深度解析
  • 蚁剑--安装、使用
  • 基于跨平台的svg组件编写一个svg编辑器
  • 《Fast Automatic White Balancing Method by Color Histogram Stretching》论文笔记
  • ChatGpt 5系列文章1——编码与智能体
  • 自建知识库,向量数据库 体系建设(一)之BERT 与.NET 4.5.2 的兼容困境:技术代差下的支持壁垒
  • 2025杭电多校第七场 矩形框选、伤害冷却比 个人题解
  • Ansible 详细笔记
  • 高性能web服务器Nginx
  • Linux 系统运维、网络、SQL Server常用命令
  • Mac如何安装telnet命令
  • 3D文档控件Aspose.3D实用教程:在 C# 中将 3MF 文件转换为 STL
  • 深度学习与遥感入门(六)|轻量化 MobileNetV2 高光谱分类
  • UNet改进(32):结合CNN局部建模与Transformer全局感知
  • HTTP应用层协议-长连接
  • (25.08)Ubuntu20.04+ROS1复现LIO-SAM
  • 2025年最新原创多目标算法:多目标酶作用优化算法(MOEAO)求解MaF1-MaF15及工程应用---盘式制动器设计,提供完整MATLAB代码
  • 【代码随想录day 18】 力扣 501.二叉搜索树中的众数
  • 力扣热题100------279.完全平方数