NOIP2023模拟2联测23 C. 负责
NOIP2023模拟2联测23 C. 负责
题目大意
给你
现在需要你删除一些区间,使得每个区间大小不超过
思路
显然,想要断开一个连通块,那就是要把包含某个点的区间全部删掉。
设
每次向后更新时加上区间的权值,如果区间个数大于
时间复杂度
code
#include <bits/stdc++.h>
#define fu(x , y , z) for(int x = y ; x <= z ; x ++)
#define LL long long
using namespace std;
const int N = 2505;
int n , k , b[N] , f[N];
LL sum , ans , dp[N];
struct Re {
int l , r;
LL w;
} re[N];
priority_queue<LL , vector<LL> , greater<LL>> q;
bool cmp (Re x , Re y) { return x.r != y.r ? x.r < y.r : x.l < y.l; }
int main () {
scanf ("%d%d" , &n , &k);
fu (i , 1 , n) {
scanf ("%d%d%lld" , &re[i].l , &re[i].r , &re[i].w);
sum += re[i].w;
}
sort (re + 1 , re + n + 1 , cmp);
LL now;
fu (i , 0 , n) {
ans = max (ans , dp[i]);
now = 0;
while (!q.empty ())
q.pop ();
fu (j , i + 1 , n) {
if (re[i].r < re[j].l) {
now += re[j].w;
q.push (re[j].w);
if (q.size () > k) {
now -= q.top ();
q.pop ();
}
}
dp[j] = max (dp[j] , ans + now);
}
}
printf ("%lld" , sum - ans);
return 0;
}
如果人生会有很长,愿有你的荣耀永不散场
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端