很明显是dp

看题目的时候我们先进行初步的思考,发现一个性质

一个点时不可能被重复覆盖三次的
很显然,如果一个点被覆盖了3次,这3个覆盖他的区间一定是有一个区间被完全包含的,因为有贡献的左右端点只有两个

这种dp一看就是要按照右端点排序,不然会有严重的后效性无法处理
排完序后还是有后效性,第一维的状态已经很明显了,是选到了第i个区间
看完题解后发现为了后效性的处理第二维一定是和所选区间的最后的元素有关系的
这里就设第二维为区间 [j,r_i] 被覆盖了一次(只能是一次 )

这样就考虑到了这个需要决策的选择的影响处理

这就是最后的dp状态

关于转移

有两种情况,一个是这个区间刚刚卡好,那就之间在这个里面转移,即:

另外一种,r[j]卡在了这个区间的里面,即:

然后就没了

code

#include<bits/stdc++.h>
#define ll long long
using namespace std;
inline ll read()
{
char c=getchar();int a=0,b=1;
for(;c<'0'||c>'9';c=getchar())if(c=='-')b=-1;
for(;c>='0'&&c<='9';c=getchar())a=a*10+c-48;
return a*b;
}
const int N=4001;
int f[N][N],awa[N][N],T,n,m,ans=1<<30;
struct qwq{int l,r,v;}a[N];
bool mmp(qwq a,qwq b)
{
return a.r<b.r;
}
int main()
{
freopen("intervals.in","r",stdin);
freopen("intervals.out","w",stdout);
T=read();
while(T--)
{
ans=(1<<30);
n=read();m=read();
for(int i=1;i<=n;i++)
{
a[i].l=read();
a[i].r=read();
a[i].v=read();
}
sort(a+1,a+n+1,mmp);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
f[i][j]=awa[i][j]=(1<<30);
}
}
for(int i=1;i<=n;i++)
{
if(a[i].l==1)
{
for(int j=1;j<=a[i].r;j++)
{
awa[i][j]=f[i][j]=a[i].v;
}
}
for(int j=1;j<i;j++)
{
if(a[j].r+1==a[i].l)
{
f[i][a[i].l]=min(f[i][a[i].l],max(awa[j][a[j].r],a[i].v));
}
if(a[i].l<=a[j].r&&a[j].r<=a[i].r)
{
f[i][a[j].r+1]=min(f[i][a[j].r+1],max(awa[j][a[i].l],a[i].v+a[j].v));
}
}
awa[i][1]=min(awa[i][1],f[i][1]);
for(int j=2;j<=a[i].r;j++)
{
awa[i][j]=min(awa[i][j],min(awa[i][j-1],f[i][j]));
}
if(a[i].r==m)ans=min(ans,awa[i][a[i].r]);
}
if(ans==(1<<30))ans=-1;
printf("%d\n",ans);
}

一次考试的dp题的更多相关文章

  1. [BZOJ1009] [HNOI2008] GT考试(KMP+dp+矩阵快速幂)

    [BZOJ1009] [HNOI2008] GT考试(KMP+dp+矩阵快速幂) 题面 阿申准备报名参加GT考试,准考证号为N位数X1X2-.Xn,他不希望准考证号上出现不吉利的数字.他的不吉利数学A ...

  2. Codeforces Round #369 (Div. 2)---C - Coloring Trees (很妙的DP题)

    题目链接 http://codeforces.com/contest/711/problem/C Description ZS the Coder and Chris the Baboon has a ...

  3. 4817 江哥的dp题d

    4817 江哥的dp题d  时间限制: 1 s  空间限制: 256000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description 已知1-N的排列P的LIS(最长上 ...

  4. 4809 江哥的dp题c

    4809 江哥的dp题c  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description 有两个数x,y,一开始x=1,y= ...

  5. 4816 江哥的dp题b

    4816 江哥的dp题b  时间限制: 1 s  空间限制: 256000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description 给出两个1-N的随机排列A,B.若 ...

  6. 4815 江哥的dp题a

    4815 江哥的dp题a  时间限制: 1 s  空间限制: 256000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description 给出一个长度为N的序列A(A1,A ...

  7. HDU 2577 How to Type(dp题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2577 解题报告:有一个长度在100以内的字符串,并且这个字符串只有大写和小写字母组成,现在要把这些字符 ...

  8. codevs4817 江哥的dp题d

    4817 江哥的dp题d  时间限制: 1 s  空间限制: 256000 KB  题目等级 : 黄金 Gold [题目描述] Description 已知1-N的排列P的LIS(最长上升子序列)不超 ...

  9. 古韵之乞巧 题解 dp题

    [noip模拟赛1]古韵之乞巧   描述 闺女求天女,更阑意未阑. 玉庭开粉席,罗袖捧金盘. 向月穿针易,临风整线难. 不知谁得巧,明旦试相看. ——祖咏<七夕> 女子乞巧,是七夕的重头戏 ...

  10. cf1061c 普通dp题

    题解见https://blog.csdn.net/godleaf/article/details/84402128 这一类dp题是可以压缩掉一维空间的,本题枚举a1到an,枚举到ai时枚举ai的每个约 ...

随机推荐

  1. 使用Git进行代码版本控制和协作:代码共享、协作和版本管理

    目录 1. 引言 2. 技术原理及概念 3. 实现步骤与流程 使用 Git 进行代码版本控制和协作:代码共享.协作和版本管理 Git 是一个开源的分布式版本控制系统,由 Linux 内核开发组创建.G ...

  2. 使用python发送sip协议的OPTIONS

    环境:Windows10_x64  Python版本 :3.9.2   sip协议提供了OPTIONS请求方法可用于探测对端状态,今天记录下Windows10环境下使用python3.9简单实现sip ...

  3. 这问题巧了,SpringMVC 不同参数处理机制引发的思考

    这个问题非常有趣,不是SpringMVC 的问题,是实际开发中混合使用了两种请求方式暴露出来的. 问题场景 功能模块中,提供两个 Http 服务.一个是列表查询(application/json 请求 ...

  4. 【NestJS系列】从Nest CLI开始入门

    初识Nest JS Nest 是一个渐进的 Node.js 框架,它可以在 TypeScript 和 JavaScript (ES6.ES7.ES8)之上构建高效.可伸缩的企业级服务器端应用程序. N ...

  5. 零基础实现Java直播(一):集成

    从泛娱乐的秀场直播,到直播带货潮流中的电商直播,直播已经成为2020年最热的应用技术之一,越来越多的产品希望加入直播功能.下面我们基于即构Express Video SDK,来分享如何从零实现线上直播 ...

  6. nacos适配达梦、瀚高、人大金仓数据库及部分源码探究

    一.插件实现 1.插件目录结构 2.pom依赖 <dependency> <groupId>com.alibaba.nacos</groupId> <arti ...

  7. String s=new String(“hello”)的执行过程

    一. 介绍 String 是Java.long包下的String类,是一个特殊的引用类型,用于表示字符串.它提供了许多方法来操作和处理字符串,比如连接.截取.查找.替换等.String类内部使用字符数 ...

  8. 代码随想录贪心专题-day1

    35. 分发糖果 n 个孩子站成一排.给你一个整数数组 ratings 表示每个孩子的评分. 你需要按照以下要求,给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果. 相邻两个孩子评分更高的孩子会获 ...

  9. debezium同步postgresql数据至kafka

    0 实验环境 全部部署于本地虚拟机 debezium docker部署 postgresql.kafka本机部署 1 postgresql 1.1 配置 设置postgres密码为123 仿照exam ...

  10. The language server needs at least PHP 7.1 installed. Version found: 7.0.10

    解决方案: 打开VS Code 文件 -> 首选项 -> 设置 -> 在 settings.json 中编辑 在 settings.json 中,加入: "php.exec ...