首页 > 其他分享 >NOIP2023模拟2联测23 C. 负责

NOIP2023模拟2联测23 C. 负责

时间:2023-10-25 20:44:19浏览次数:43  
标签:23 re 联测 权值 区间 NOIP2023 now dp

NOIP2023模拟2联测23 C. 负责

目录

题目大意

给你 \(n\) 个区间 \([l_i , r_i]\) ,每个区间有个 \(w_i\) 。如果两个区间有交集(包括端点)那么两个区间就可以连边,形成一个图。

现在需要你删除一些区间,使得每个区间大小不超过 \(k\) 。问最小删除的区间权值和。

思路

显然,想要断开一个连通块,那就是要把包含某个点的区间全部删掉。

设 \(dp_i\) 表示只考虑在 \(r_i\) 之前的区间,且 \(r_i\) 是最后一个断开的地方的最大选的区间的权值和。

每次向后更新时加上区间的权值,如果区间个数大于 \(k\) 就把权值最小的区间删掉,用一个堆维护。

时间复杂度 \(O(n^2log_2n)\)

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;
}

标签:23,re,联测,权值,区间,NOIP2023,now,dp
From: https://www.cnblogs.com/2020fengziyang/p/17788088.html

相关文章

  • 2023.10.25——每日总结
    学习所花时间(包括上课):9h代码量(行):0行博客量(篇):1篇今天,上午学习,下午学习;我了解到的知识点:1.java断言,代码区域等明日计划:学习......
  • 76th 2023/10/10 Atcoder 10/8-ARC-T3
    这道题题目很有意思,看上去是很简单明显的计数,但一思考会发现要死很多重复状态因为标记的线很容易让人从一个方框开始思考起,所以很容易带入关于重复考虑的误区观察到线是斜着的,思考影响到的范围若涂上一个格子或左一个格子的右下,则该格子不能填涂左上观察到影响范围是一个个斜......
  • 75th 2023/10/6 k-D Tree
    附上一图:按维度分级,每次轮换用哪个维度即可oi中大多为2维这就是我对它的全部理解了结构与线段树几乎相同分左右结点时取当前区间段的中位数因而每一个节点都不同于线段树的表示范围它表示的是一个确确实实的节点的值访问前可以维护一个节点及它的子树的维度上下界以减少询......
  • 74th 2023/10/5 模拟赛总结56
    T1看完题目,看到n<=9的限制,心头一紧一个词汇浮现于心:BruceForces暴力+记忆化,\(O(能过)\)但赛时并没有这样打,而是选择了往DP方面思考因为真的没想到能过然后DP呢,又不清楚该如何存一列的状态就匆匆暴力后离去考虑状压DP保留有用状态关键点:\(k=\min(k,n-k)\)可以参考\(C^k......
  • 78th 2023 10/23 2023CSP-J/S游寄
    赛完了,静下心来思考进NOIP很简单,但是NOIP就没这么容易再往上升了首先当然是……游上午因为怕堵车,于是发车神速,6:55到了很多,最后一个人在7:07到了到考场很近,15min的路,不远上午是J,当娱乐赛,成绩真的炒鸡没用,就图一乐S赛才是重头戏调整好心态后,我早早来考场等,第一个进入,离考试开......
  • 77th 2023/10/18 网络流总结
    最大流我选择dinic算法总体思路就是先跑bfs分层,找出一条增广路并增广有一个大思路,就是反悔边,流一条边不一定是最优的,所以要建一条反向边,流过该边,将它的流量减少的同时,将它的反向边流量加大,这样就相当于给了一个流回去的机会,好理解吧就是如此,tot记得赋值为1,反向边为\(x\otimes1......
  • 2023 CSP-S 二轮游记
    2023CSP-S二轮游记T1刚开始以为是个CQOI2018九连环那样的题目,导致心理认为题目很难,刚开始没看题面和样例,赛时直接去看T2了,后来发现T1给的样例2很适合分析,分析一顿发现T1很简单,考后发现大家貌似把状态压到了十进制或者是二进制里,只有我一个压到了字符串里()。T2以为......
  • 考场(NOIP2023模拟2联测23)
    T1一眼顶针鉴定不出来,二眼顶针看出来是贪心,对于一个序列来说肯定要选值小的数来拉低平均数,鉴定完毕T2有点东西,也许是要用\(kruskal\)或\(prim\)的思想做题???边从前向后遍历,若一个边不是树边,因为要保证树边权最小,所以每次要更新树边的边权,然后再更新非树边边权,更新树边边权时......
  • 2023中国物流系统集成商百强榜研究报告(附下载)
    随着智能物流建设的不断深入,企业应用了越来越多的自动化、智能化物流设备与管理软件。但各物流功能之间的效益背反问题如何解决? 各品牌与类型物流设备的接口各异如何统一调度? 各物流设备与管理软件之间的数据如联通传输?乃至物流设备与生产设备、物流管理软件与其他管理软件的......
  • 2023各版本JDK下载链接
    JavaArchive|OracleJavaArchive|Oraclehttps://www.oracle.com/java/technologies/downloads/archive/ ......