第一眼,我勒个去。。。然后看到n ≤ 300的时候就2333了

首先把时间离散化,则对于一个时间的区间,可以知道中间最大的那个一定要被选出来,然后把区间分成左右两份

于是区间DP就好了,注意用左开右开的区间比较方便2333

如果暴力找区间内最大值是O(n3)的,当然st表就是O(n2logn)的了。。。不过st表辣么难蒟蒻根本不会QAQQQ

 /**************************************************************
Problem: 3928
User: rausen
Language: C++
Result: Accepted
Time:1820 ms
Memory:2248 kb
****************************************************************/ #include <cstdio>
#include <algorithm> using namespace std;
const int N = ;
const int inf = 1e9; inline int read(); struct data {
int st, ed, h;
data(int _s = , int _e = , int _h = ) : st(_s), ed(_e), h(_h) {} inline void get() {
st = read(), ed = read(), h = read();
}
} a[N]; int n, tot;
int tmp[N], len;
int f[N][N]; int main() {
int T, H, i, j, k;
T = read();
while (T--) {
n = read();
for (i = ; i <= n; ++i) {
a[i].get();
tmp[i * - ] = a[i].st, tmp[i * ] = a[i].ed;
}
sort(tmp + , tmp + * n + );
tot = unique(tmp + , tmp + * n + ) - tmp - ;
for (i = ; i <= n; ++i) {
a[i].st = lower_bound(tmp + , tmp + tot + , a[i].st) - tmp;
a[i].ed = lower_bound(tmp + , tmp + tot + , a[i].ed) - tmp;
}
tot += ;
for (len = ; len <= tot; ++len)
for (i = ; i <= tot - len; ++i) {
j = i + len, H = -;
for (k = ; k <= n; ++k)
if (i < a[k].st && a[k].ed < j && (H == - || a[H].h < a[k].h)) H = k;
if (H == -) f[i][j] = ;
else for (f[i][j] = inf, k = a[H].st; k <= a[H].ed; ++k)
f[i][j] = min(f[i][j], a[H].h + f[i][k] + f[k][j]);
}
printf("%d\n", f[][tot]);
}
return ;
} inline int read() {
static int x;
static char ch;
x = , ch = getchar();
while (ch < '' || '' < ch)
ch = getchar();
while ('' <= ch && ch <= '') {
x = x * + ch - '';
ch = getchar();
}
return x;
}

BZOJ3928 [Cerc2014] Outer space invaders的更多相关文章

  1. 2018.10.25 bzoj3928: [Cerc2014] Outer space invaders(区间dp)

    传送门 区间dpdpdp好题. 首先肯定需要把坐标离散化. 然后在数轴上面区间dpdpdp. 对于当前区间,区间中最大的数一定会被选. 于是我们记f[i,j]f[i,j]f[i,j]表示所有左端点在i ...

  2. [BZOJ3928/4048]Outer space invaders

    [BZOJ3928/4048]Outer space invaders 题目大意: 有\(n(n\le300)\)个物品,第\(i\)个物品会在\(a_i\sim b_i\)时刻出现,且离你的距离为\ ...

  3. BZOJ.3928.[CERC2014]Outer space invaders(区间DP)

    BZOJ3928 双倍经验BZOJ4048 Codeforces GYM100543 L \(Description\) \(Solution\) 考虑出现时间在\([l,r]\)内的敌人,设最远的敌 ...

  4. bzoj 3928: [Cerc2014] Outer space invaders

    $f[i][j]$表示消灭起始时间在$(i,j)$内的外星人所花费的最小代价. 考虑在这个区间内距离最远的外星人h,在他的区间中一定要选一个点要开一炮,而且这一炮可以顺便把其他跨过这个点的敌人消灭,剩 ...

  5. [CERC2014] Outer space invaders

    题目链接 题意 你受到一群外星人的攻击,第 $i$ 个外星人会在 $ai$ 时间出现,与你的距离为 $di$,且必须在 $bi$ 时间前消灭.你有一个区域冲击波器,每次攻击可以设定一个功率 $R$,这 ...

  6. Codeforces Gym100543L Outer space invaders 区间dp 动态规划

    原文链接https://www.cnblogs.com/zhouzhendong/p/CF-Gym100543L.html 题目传送门 - CF-Gym100543L 题意 $T$ 组数据. 有 $n ...

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

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

  8. Space Invaders 太空侵略者

    发售年份 1978 平台 街机 开发商 Taito 类型 射击 https://www.youtube.com/watch?v=MU4psw3ccUI

  9. 区间dp提升复习

    区间\(dp\)提升复习 不得不说这波题真的不简单... 技巧总结: 1.有时候转移可以利用背包累和 2.如果遇到类似区间添加限制的题可以直接把限制扔在区间上,每次只考虑\([l,r]\)被\([i, ...

随机推荐

  1. C#TextBox自动滚动到最低端

    C#中一个RichTextBox,当新写入内容时,超过当前显示区域后,自动滚动到最低端,方便查看内容. private void txtInfo_TextChanged(object sender,  ...

  2. Log4j XML 配置

    Xml代码 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configurat ...

  3. [poj2785]4 Values whose Sum is 0(hash或二分)

    4 Values whose Sum is 0 Time Limit: 15000MS Memory Limit: 228000K Total Submissions: 19322 Accepted: ...

  4. linux2.6内核compat_ioctl函数

    一.内核原型(linux2.6.28-7) long (*compat_ioctl)(struct tty_struct *tty, struct file * file,               ...

  5. iOS之Photos:访问某个相册通过collectionView显示

    文中相关知识点较多,只记载重点思路,相关部分都有对应注释说明,部分还需要优化,只是工作学习的一种思路. @import AVFoundation; @import Photos;   导入框架 - ( ...

  6. svn设置提交忽略某些文件或文件夹

    在svn客户端,想设置忽略提交.class文件,通过 properties > New > Other 添加一个忽略的属性,,还是不行:部分屏蔽了,部分class还是在列表中 再次参考了一 ...

  7. 转:SQL的内连接与外连接

    参考:http://www.cuiyongjian.com/post-130.html 在oracle的SQL语句常用的连接有内连接(inner join),外连接(outer join)等,内连接又 ...

  8. eclipse里maven install时,报错提示jdk为无效的目标版本:1.7

    http://blog.csdn.net/wabiaozia/article/details/51733372 ************************************ 报错提示: [ ...

  9. dbca建库时找不到ASM磁盘

    现象 dbca创建数据库时,找不到ASM磁盘组:而grid用户使用asmca却又能看到ASM磁盘组. 解决方法 1. 检查设备的权限,正确的权限为grid:asmadmin 2. 检查GRID_HOM ...

  10. 20160805_Cent6.4x64_安装配置(含网卡驱动的配置)

    ZC: 全程 root用户 操作. 1.我在BIOS中将 UEFI关闭了,然后 才安装的 Cent6.4x64 (ZC: 安装系统时,一起安装了 gcc等一些编程用的包.本来是想安装QT时少点麻烦的, ...