题面:https://www.luogu.org/problem/P4766

非常容易就想到以时间为区间来DP。

但是时间比较大,需要离散化。

转移方程就是:

f[l][r]=min(f[l][k-1]+p[id].d+f[k+1][r])

这样转移的原因是有一些区间是没有外星人的,这些区间都是0。

所以不能直接memset所有的决策点。

就需要找一下这个区间是不是有外星人,最大的是几号。

for(int k=1;k<=n;k++) if(p[k].a>=l && p[k].b<=r && (p[k].d > p[id].d || id==-1)) id=k;

拿这个id转移。

代码如下:

#include<bits/stdc++.h>
using namespace std;
int f[1010][1010],t,n,b[1010],tot;
namespace work{
struct node{int a,b,d;}p[400];
void main(){scanf("%d",&n);tot=0;memset(b,0,sizeof(b));memset(f,0,sizeof(f));for(int i=1;i<=n;i++) scanf("%d%d%d",&p[i].a,&p[i].b,&p[i].d),b[++tot]=p[i].a,b[++tot]=p[i].b;sort(b+1,b+1+tot);int cnt=unique(b+1,b+1+tot)-b-1;for(int i=1;i<=n;i++) p[i].a=lower_bound(b+1,b+1+cnt,p[i].a)-b,p[i].b=lower_bound(b+1,b+1+cnt,p[i].b)-b;for(int len=1;len<=cnt;len++)for(int l=1;l<=cnt && l+len-1<=cnt ;l++){int r=len+l-1,id=-1;for(int k=1;k<=n;k++) if(p[k].a>=l && p[k].b<=r && (p[k].d > p[id].d || id==-1)) id=k;if(id==-1){f[l][r]=0;continue;}f[l][r]=0x3f3f3f3f;for(int k=p[id].a;k<=p[id].b;k++) f[l][r]=min(f[l][r],f[l][k-1]+p[id].d+f[k+1][r]);}printf("%d\n",f[1][cnt]);
}
}
int main(){scanf("%d",&t);while(t--){work::main();}
}

转载于:https://www.cnblogs.com/ChrisKKK/p/11596133.html

Luogu_P4766 [CERC2014]Outer space invaders【题解】区间DP相关推荐

  1. 【Luogu P4766】 [CERC2014]Outer space invaders(区间dp)

    目录 题目 题目描述 输入格式 输出格式 输入输出样例 思路 代码 题目 题目描述 来自外太空的外星人(最终)入侵了地球.保卫自己,或者解体,被他们同化,或者成为食物.迄今为止,我们无法确定. 外星人 ...

  2. P4766 [CERC2014]Outer space invaders(区间dp)

    题意: 题目描述 来自外太空的外星人(最终)入侵了地球.保卫自己,或者解体,被他们同化,或者成为食物.迄今为止,我们无法确定. 外星人遵循已知的攻击模式.有N个外星人进攻,第i个进攻的外星人会在时间a ...

  3. P4766 [CERC2014]Outer space invaders——思维+区间dp

    题目传送门 思路 这道题思维的转换真的很妙,第 i 个外星人出现的时间区间是 [ai,bi][a_i,b_i][ai​,bi​] ,距离为 did_idi​ , 我们可以以时间区间为横坐标,距离区间为 ...

  4. 洛谷P4766 [CERC2014]Outer space invaders题解

    https://www.luogu.com.cn/problem/P4766 description: 有 nnn 个外星人进攻,第 iii 个进攻的外星人会在时间 aia_iai​ 出现,距离你的距 ...

  5. Codeforces Gym100543L:Outer space invaders(区间DP)

    题目链接 题意 有n个人,每个人有一个出现时间a和一个开枪时间b和一个距离d,在任意一个时刻,你可以选择炸人,你要炸一个人的花费是和他的距离d,并且所有的已经出现并且还没开枪的和你距离<=d的人 ...

  6. CFgym:Outer space invaders(区间dp)

    题意:N个飞船,分别需要在时间[ai,bi]内打它下来,距离你di,每次发射武器消耗的能量为di,问将所有飞船打下来消耗的最小能量. 思路:建立坐标轴,横轴为时间,纵轴为距离,跟那个用最少直线穿过所有 ...

  7. 题解 P4766 【[CERC2014]Outer space invaders】

    link description: 有 nnn 个外星人进攻,第 iii 个进攻的外星人会在时间 aia_iai​ 出现,距离你的距离为 did_idi​ ,它必须在时间 bib_ibi​ 前被消灭, ...

  8. Cerc2014 Outer space invaders

    Cerc2014 Outer spaceinvaders 有N个外星人,第i个外星人会在ai时间出现,离你距离di,并且必须在bi时间之前被消灭.你有一把很NB的武器,攻击范围是个半径为R的圆,R可以 ...

  9. P4766 [CERC2014]Outer space invaders

    自行想象传送门 题解 当我们一看到这个题的tag时就知道这是一道区间dp水题 很明显这个区间就是指时间上的区间 我们用dp[i][j]表示时间i~j之间消灭所有的aliens的最小代价 很明显开不下这 ...

最新文章

  1. PAT_B_1008_Java(20分)
  2. Java多线程(7)--线程池创建线程
  3. html5视频抓取,js和HTML5基于过滤器从摄像头中捕获视频的方法
  4. 面试官:换人!他连进程线程协程这几个特点都说不出
  5. Python-非关键字参数和关键字参数(*args **kw)
  6. .DateTimeToStr函数专用优化版
  7. 南海区行政审批管理系统接口规范v0.3(规划) 2.业务申报API 2.1.businessApply【业务申报】...
  8. windows性能监视器常用计数器
  9. 【软件工程】 详细设计
  10. java实现代理服务器
  11. 内网穿透NPS及NPC搭建(使用docker实现)
  12. 专为前端开发者准备的 15 款优秀的 Sublime Text 插件
  13. 鸡啄米教程之VS2010/MFC编程入门教程之目录和总结
  14. 【数据库】关系数据模型
  15. appimage转deb
  16. 有关B2C制造业电商企业的数字化转型思考
  17. YOLOv5、v7改进之三十一:CrissCrossAttention注意力机制
  18. 安卓手机各种信息获取---(通讯录短信息通话记录)
  19. linux统计函数调用次数实验,统计linux系统调用的次数
  20. IAP_1_几种下载程序的方式

热门文章

  1. springboot连接远程Redis
  2. java 调用百度接口人脸识别
  3. Topaz Video Enhance Al for mac(视频无损放大软件)
  4. vue修改数组中的数据7个方法
  5. android 回编译失败,Androidkiller 回编译失败
  6. 数学物理方法·例题①数学物理方法简明教程_林福民(第一版)1.1复数与复平面例题
  7. win10系统.android是什么文件夹,d盘文件不见了怎么恢复?Windows10增加安卓程序运行...
  8. 【软考中级】多媒体应用设计师复习笔记第一章
  9. 16进制的 RBG值 颜色 转换
  10. 电影死刑犯的主题歌: Nickelback.-.Savin'.Me