链接

点击跳转

题解

分析题目,如果一种方案中,某个点上覆盖了三条线段,那么肯定有一条线段即使去掉也能让剩下的线段覆盖整个区间,而且答案只可能变优而不可能变劣。

所以可以得出一个结论:一个点上面最多有两条线段

那么方案也就长这样:

先把线段按照右端点排序,然后开始dpdpdp

dp[i][j]dp[i][j]dp[i][j]表示强制选择第iii条线段,从111到这条线段的右端都被覆盖了,而且从这个线段的左端点到j−1j-1j−1这个坐标都是被覆盖了两次的区间。满足以上条件的最小答案。

代码

#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#define iinf 0x3f3f3f3f
#define linf (1ll<<60)
#define eps 1e-8
#define maxn 2020
#define cl(x) memset(x,0,sizeof(x))
#define rep(i,a,b) for(i=a;i<=b;i++)
#define drep(i,a,b) for(i=a;i>=b;i--)
#define em(x) emplace(x)
#define emb(x) emplace_back(x)
#define emf(x) emplace_front(x)
#define fi first
#define se second
#define de(x) cerr<<#x<<" = "<<x<<endl
using namespace std;
using namespace __gnu_pbds;
typedef long long ll;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
ll read(ll x=0)
{ll c, f(1);for(c=getchar();!isdigit(c);c=getchar())if(c=='-')f=-f;for(;isdigit(c);c=getchar())x=x*10+c-0x30;return f*x;
}
struct Segment
{ll l, r, w;
}seg[maxn];
ll dp[maxn][maxn];
int main()
{ll T=read();while(T--){ll n=read(), m=read(), i, j, ans=linf;rep(i,1,n)seg[i].l=read(), seg[i].r=read(), seg[i].w=read();sort(seg+1,seg+n+1,[](Segment s1, Segment s2){return s1.r<s2.r;});rep(i,0,n)rep(j,0,m+1)dp[i][j]=linf;dp[0][1]=0;rep(i,1,n){rep(j,0,i-1){ll t=linf;if(seg[i].l<=seg[j].r)t=max(dp[j][seg[i].l],seg[j].w+seg[i].w);else if(seg[i].l==seg[j].r+1)t=max(dp[j][seg[i].l],seg[i].w);dp[i][seg[j].r+1]=min(dp[i][seg[j].r+1],t);}rep(j,seg[i].l+1,seg[i].r+1)dp[i][j]=min(dp[i][j],dp[i][j-1]);if(seg[i].r==m)ans=min(ans,dp[i][m+1]);}if(ans==linf)printf("-1\n");else printf("%lld\n",ans);}return 0;
}

nowcoder17338 Interval Revisited相关推荐

  1. 牛客网暑期ACM多校训练营(第四场): B. Interval Revisited(DP)

    链接:https://ac.nowcoder.com/acm/contest/142/B 来源:牛客网 题目描述 Chiaki has a long interval [1,m] and n smal ...

  2. Circular Barn Revisited (区间DP)

    Circular Barn Revisited (区间DP) 题意:nnn头牛进nnn个对应房子(环形),每头牛所走路径贡献(length−1)×cnt(length-1) \times cnt(le ...

  3. 057 Insert Interval 插入区间

    给出一个无重叠的按照区间起始端点排序的区间列表. 在列表中插入一个新的区间,你要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间). 示例 1: 给定区间 [1,3],[6,9],插入并 ...

  4. INTERVAL数据类型-007学习笔记

    http://baggio785.itpub.net/post/31233/286119 INTERVAL数据类型用来存储两个时间戳之间的时间间隔. 可以指定years and months,或者da ...

  5. Structure-from-Motion Revisited

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 本文由知乎作者fishmarch授权转载,不得擅自二次转载.原文链接:https://zhuanlan ...

  6. Python使用matplotlib可视化时间序列数据、并为时间序列曲线添加误差带、使用95%置信区间(Time Series Error Bands with confidence interval

    Python使用matplotlib可视化时间序列数据.并为时间序列曲线添加误差带.使用95%置信区间(Time Series with Error Bands with confidence int ...

  7. pandas使用query函数查询指定日期索引之间对应的dataframe数据行(select rows date index between a certain date interval)

    pandas使用query函数查询指定日期索引之间对应的dataframe数据行(select rows where date index between a certain date interva ...

  8. R语言ggplot2可视化使用geom_ribbon()函数向ggplot2图添加置信度带(Confidence Band、Confidence Interval)

    R语言ggplot2可视化使用geom_ribbon()函数向ggplot2图添加置信度带(Confidence Band.Confidence Interval) 目录

  9. Apache Flink 漫谈系列(12) - Time Interval(Time-windowed) JOIN...

    说什么 JOIN 算子是数据处理的核心算子,前面我们在<Apache Flink 漫谈系列(09) - JOIN 算子>介绍了UnBounded的双流JOIN,在<Apache Fl ...

最新文章

  1. 内含福利|CSDN 携手字节跳动:云原生Meetup北京站报名热烈启动,1月8日见!
  2. Linux 下 PostgreSQL 源码编译安装
  3. 人工智能恶意使用报告:预测、预防和缓解
  4. 完美,竟然用一个脚本就把系统升级到https了,且永久免费!
  5. 关于调试过程中单片机复位的几点心得与体会
  6. uboot,eboot和bootloader的联系
  7. java学习(90):Character方法大小写转换
  8. 计算机画画作品 人物 游泳,夏天主题的儿童画-游泳的儿童绘画作品
  9. 五子棋服务端程序java_9网上五子棋对战(java)服务端源码
  10. KafkaProducer介绍
  11. oracle扩充undo,Oracle快速替换UNDO表空间方法
  12. python操作数据库慢_MySQL数据库之python 拉取mysql 慢日志
  13. Tomcat 8 中的startup.bat
  14. html5游戏燕郊,December | 2019 | 微信html5游戏源码发布站
  15. paip.python错误解决21
  16. 纬地道路纵断面设计教程_市政道路从识图算量到施工,一篇全搞定
  17. java word书签_java和javascript获取word的 书签位置
  18. python和c++同时订阅两个话题,在一个回调函数中处理
  19. C++RPG打怪小游戏
  20. 微信公众平台服务号如何申请

热门文章

  1. 搭建Prometheus监控报警
  2. 光子虚拟机_光速虚拟机app下载-光速虚拟机安卓版 v1.1.1 - 安下载
  3. [OHIF-Viewers]医疗数字阅片-医学影像-安装问题
  4. [SHOI2008]小约翰的游戏John(博弈+SJ定理)
  5. 给孩子炖鳄鱼?时代变了,就比谁会玩儿...
  6. 转给你身边的工程师!从零开始搭建一个完整AGV控制系统
  7. Mega使用及R语言中多序列比对
  8. 用python绘制字符画
  9. BT源代码学习心得(三):种子文件的编码方式 -- 转贴自wolfenstein (NeverSayNever)
  10. Win10 开机默认开启数字小键盘的方法