BZOJ3928 [Cerc2014] Outer space invaders
第一眼,我勒个去。。。然后看到n ≤ 300的时候就2333了
首先把时间离散化,则对于一个时间的区间,可以知道中间最大的那个一定要被选出来,然后把区间分成左右两份
于是区间DP就好了,注意用左开右开的区间比较方便2333
如果暴力找区间内最大值是O(n3)的,当然st表就是O(n2logn)的了。。。不过st表辣么难蒟蒻根本不会QAQQQ
1 /************************************************************** 2 Problem: 3928 3 User: rausen 4 Language: C++ 5 Result: Accepted 6 Time:1820 ms 7 Memory:2248 kb 8 ****************************************************************/ 9 10 #include <cstdio> 11 #include <algorithm> 12 13 using namespace std; 14 const int N = 605; 15 const int inf = 1e9; 16 17 inline int read(); 18 19 struct data { 20 int st, ed, h; 21 data(int _s = 0, int _e = 0, int _h = 0) : st(_s), ed(_e), h(_h) {} 22 23 inline void get() { 24 st = read(), ed = read(), h = read(); 25 } 26 } a[N]; 27 28 int n, tot; 29 int tmp[N], len; 30 int f[N][N]; 31 32 int main() { 33 int T, H, i, j, k; 34 T = read(); 35 while (T--) { 36 n = read(); 37 for (i = 1; i <= n; ++i) { 38 a[i].get(); 39 tmp[i * 2 - 1] = a[i].st, tmp[i * 2] = a[i].ed; 40 } 41 sort(tmp + 1, tmp + 2 * n + 1); 42 tot = unique(tmp + 1, tmp + 2 * n + 1) - tmp - 1; 43 for (i = 1; i <= n; ++i) { 44 a[i].st = lower_bound(tmp + 1, tmp + tot + 1, a[i].st) - tmp; 45 a[i].ed = lower_bound(tmp + 1, tmp + tot + 1, a[i].ed) - tmp; 46 } 47 tot += 1; 48 for (len = 0; len <= tot; ++len) 49 for (i = 0; i <= tot - len; ++i) { 50 j = i + len, H = -1; 51 for (k = 1; k <= n; ++k) 52 if (i < a[k].st && a[k].ed < j && (H == -1 || a[H].h < a[k].h)) H = k; 53 if (H == -1) f[i][j] = 0; 54 else for (f[i][j] = inf, k = a[H].st; k <= a[H].ed; ++k) 55 f[i][j] = min(f[i][j], a[H].h + f[i][k] + f[k][j]); 56 } 57 printf("%d\n", f[0][tot]); 58 } 59 return 0; 60 } 61 62 inline int read() { 63 static int x; 64 static char ch; 65 x = 0, ch = getchar(); 66 while (ch < '0' || '9' < ch) 67 ch = getchar(); 68 while ('0' <= ch && ch <= '9') { 69 x = x * 10 + ch - '0'; 70 ch = getchar(); 71 } 72 return x; 73 }
View Code
转载于:https://www.cnblogs.com/rausen/p/4439368.html
BZOJ3928 [Cerc2014] Outer space invaders相关推荐
- [BZOJ3928/4048]Outer space invaders
[BZOJ3928/4048]Outer space invaders 题目大意: 有\(n(n\le300)\)个物品,第\(i\)个物品会在\(a_i\sim b_i\)时刻出现,且离你的距离为\ ...
- Cerc2014 Outer space invaders
Cerc2014 Outer spaceinvaders 有N个外星人,第i个外星人会在ai时间出现,离你距离di,并且必须在bi时间之前被消灭.你有一把很NB的武器,攻击范围是个半径为R的圆,R可以 ...
- bzoj 3928: [Cerc2014] Outer space invaders
$f[i][j]$表示消灭起始时间在$(i,j)$内的外星人所花费的最小代价. 考虑在这个区间内距离最远的外星人h,在他的区间中一定要选一个点要开一炮,而且这一炮可以顺便把其他跨过这个点的敌人消灭,剩 ...
- 题解 P4766 【[CERC2014]Outer space invaders】
link description: 有 nnn 个外星人进攻,第 iii 个进攻的外星人会在时间 aia_iai 出现,距离你的距离为 did_idi ,它必须在时间 bib_ibi 前被消灭, ...
- [CERC2014] Outer space invaders
题目链接 题意 你受到一群外星人的攻击,第 $i$ 个外星人会在 $ai$ 时间出现,与你的距离为 $di$,且必须在 $bi$ 时间前消灭.你有一个区域冲击波器,每次攻击可以设定一个功率 $R$,这 ...
- 洛谷P4766 [CERC2014]Outer space invaders题解
https://www.luogu.com.cn/problem/P4766 description: 有 nnn 个外星人进攻,第 iii 个进攻的外星人会在时间 aia_iai 出现,距离你的距 ...
- P4766 [CERC2014]Outer space invaders
自行想象传送门 题解 当我们一看到这个题的tag时就知道这是一道区间dp水题 很明显这个区间就是指时间上的区间 我们用dp[i][j]表示时间i~j之间消灭所有的aliens的最小代价 很明显开不下这 ...
- P4766 [CERC2014]Outer space invaders(区间dp)
题意: 题目描述 来自外太空的外星人(最终)入侵了地球.保卫自己,或者解体,被他们同化,或者成为食物.迄今为止,我们无法确定. 外星人遵循已知的攻击模式.有N个外星人进攻,第i个进攻的外星人会在时间a ...
- Luogu_P4766 [CERC2014]Outer space invaders【题解】区间DP
题面:https://www.luogu.org/problem/P4766 非常容易就想到以时间为区间来DP. 但是时间比较大,需要离散化. 转移方程就是: f[l][r]=min(f[l][k-1 ...
最新文章
- 绿色数据中心如何提高效率?
- Unity3D-RayMarch-几何图元0
- 数据导出之sqlserver-导出脚本
- python的优点和缺点-python的优点和缺点是什么?
- TypeError: BlobBuilder is not a constructor
- myeclispse配置自己的jdk和tomcat
- Ubuntu18.04安装VMware WorkStation
- (JAVA学习笔记) 如何计算2*8效率高(面试题)—— 左移和右移问题。
- XSS中JavaScript加密以及Filter bypass
- 定位低效率执行SQL
- Flink-Java版单词计数(批处理流处理)
- MySQL—常用指令总结
- 计算机打不出汉字怎么办,电脑打不出字怎么办,教您电脑打不出字怎么解决
- [转载] Python repr() 函数
- r语言 小树转化百分数_魅力语言小课堂|绕口令《说日》
- 手机同步查看html,手机版同步html几点注意使用
- MacOS Monterey 12.3.1(21E258) OC 0.7.9 / Cl 5145 / PE 三分区原版黑苹果镜像
- 【数学】指数函数与对数函数的导数证明
- 喜大普奔:史上最全的报表模板库免费用!
- CentOS Docker使用ELK监听日志
热门文章
- 01 svn服务搭建
- Dynamic CRM 2013学习笔记(三十三)自定义审批流4 - 规则节点 -有分支的流程处理...
- RobotFramework Library
- 思考、学习新技术的原则和方式
- IE10兼容性故障的解决办法
- dos批处理命令详解(转)
- 怎么让打印出来表格的纸下面显示页数_4个使用频率较高的Excel打印技巧,办公室打印文件时常常会用到!...
- 文本框的值默认显示文本域上_13.4.4 键盘与文本事件
- 比较好用的python编译器_比酷传播
- 搭建CentOS7.6容器镜像