CFgym:Outer space invaders(区间dp)
来源:互联网 发布:苹果整合好了的ck源码 编辑:程序博客网 时间:2024/06/05 20:52
题意:N个飞船,分别需要在时间[ai,bi]内打它下来,距离你di,每次发射武器消耗的能量为di,问将所有飞船打下来消耗的最小能量。
思路:建立坐标轴,横轴为时间,纵轴为距离,跟那个用最少直线穿过所有线段一样,从距离最远的线段开始考虑就行,dp[i][j]表示消灭完全包含在i,j里的飞船消耗的最少能量,dp[i][j] = min(dp[i][k-1]+dp[k+1][j]+h[t]),t为当前区间内最远的线段,k为该线段上的枚举使时间点,飞船的时间需要先离散化。
//reference:WeAreATeam# include <bits/stdc++.h>using namespace std;struct node{ int s, e, h;}o[310];int Li[610], dp[610][610];int main(){ int t, n; scanf("%d",&t); while(t--) { int cnt = 0; scanf("%d",&n); for(int i=0; i<n; ++i) scanf("%d%d%d",&o[i].s,&o[i].e,&o[i].h); for(int i=0; i<n; ++i) Li[cnt++] = o[i].s, Li[cnt++] = o[i].e; sort(Li, Li+cnt); cnt = unique(Li, Li+cnt)-Li; for(int i=0; i<n; ++i) { o[i].s = lower_bound(Li, Li+cnt, o[i].s)-Li+1; o[i].e = lower_bound(Li, Li+cnt, o[i].e)-Li+1; } for(int len=1; len<=cnt; ++len) { for(int i=1; i+len<=cnt; ++i) { int j = i+len, id = -1; for(int k=0; k<n; ++k) { if(o[k].s >= i && o[k].e <= j && (id==-1||o[id].h < o[k].h)) id = k; } if(id == -1) {dp[i][j]=0; continue;} dp[i][j] = 0x7fffffff; for(int k=o[id].s; k<=o[id].e; ++k) dp[i][j] = min(dp[i][j], dp[i][k-1]+dp[k+1][j]+o[id].h); } } printf("%d\n",dp[1][cnt]); } return 0;}
阅读全文
0 0
- CFgym:Outer space invaders(区间dp)
- BZOJ3928: [Cerc2014] Outer space invaders(区间DP)
- Cerc2014 Outer space invaders
- 【CERC2014】【BZOJ3928】【BZOJ4048】Outer space invaders
- BZOJ4048/3928 [Cerc2014] Outer space invaders
- gym 100543 CERC 2014 L Outer space invaders
- CERC2014 Outer spaceinvaders(区间DP,推理)
- CFgym:Teamwork(dp & 过河问题)
- CFgym:Ex Machina(交互 & 线段树区间最值)
- CFgym 100803D -Space Golf
- CFGym 101490D DP
- CFgym:Memory Manager(dp & 单调队列优化)
- CFGym 101002C 状压DP
- CFgym:Castle(KMP)
- CFGym
- CFGym
- CFGym
- CFGym
- 4-Vue入门之数据绑定
- 453. Minimum Moves to Equal Array Elements
- Android Studio Cannot find local variable
- scala学习笔记一------初步了解scala
- java FTP 文件传输
- CFgym:Outer space invaders(区间dp)
- Web前端开发基础
- FM调制解调
- vijos 分梨子
- path.c_str()
- HUD5821 Ball
- Java基本类型与类型转换(2)——位操作: byte & 0xff
- 自定义圆角背景实现富文本标题展示(纯需求实现)
- JAVA基础-集合