博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[BZOJ2216][Poi2011]Lightning Conductor[决策单调性优化]
阅读量:6570 次
发布时间:2019-06-24

本文共 1583 字,大约阅读时间需要 5 分钟。

最初在HDU的ACM模板上看到这个分治的DP优化

用这个的前提是不强制在线(f[i]不由前面的f转移过来)且决策单调

\[ \forall j\in \left[ \text{1,}n \right] \,\,p_i\ge a\left[ j \right] -a\left[ i \right] -\sqrt{|i-j|} \]

\[ p_i\ge \max ( a\left[ j \right] -a\left[ i \right] -\sqrt{|i-j|} ) \]
\[ p_i\ge \max \left( \max \left( a\left[ j \right] -a\left[ i \right] -\sqrt{i-j} \right) ,\max \left( a\left[ j \right] -a\left[ i \right] -\sqrt{j-i} \right) \right) \]

第15行和第7行 >=不能写成> 因为决策点单调,即使两个点的dp值相同,也要更新决策点

int a[MAXN * 5], n;int dp1[MAXN * 5], dp2[MAXN * 5];inline void DP1(int l, int r, int dl, int dr) {  if (l > r) return ;  int Max = 0; lf mx = 0;  lop(i, dl, min(dr, mid)) if (a[i] - a[mid] + sqrt(mid - i) >= mx) Max = i, mx = a[i] - a[mid] + sqrt(mid - i);  chmax(dp1[mid], a[Max] - a[mid] + ceil(sqrt(mid - Max)));  DP1(l, mid - 1, dl, Max), DP1(mid + 1, r, Max, dr);}inline void DP2(int l, int r, int dl, int dr) {  if (l > r) return ;  int Max = 0; lf mx = 0;  dlop(i, dr, max(dl, mid)) if (a[i] - a[mid] + sqrt(i - mid) >= mx) Max = i, mx = a[i] - a[mid] + sqrt(i - mid);  chmax(dp2[mid], a[Max] - a[mid] + ceil(sqrt(Max - mid)));  chmax(dp2[mid], dp1[mid]);  DP2(l, mid - 1, dl, Max), DP2(mid + 1, r, Max, dr);}int main() {#ifdef LOCAL_DEBUG  // freopen("data.in", "r", stdin), freopen("data.out", "w", stdout);  Dbg = 1; uint tim1 = clock();#endif  in, n;  lop(i, 1, n) in, a[i];  DP1(1, n, 1, n);  DP2(1, n, 1, n);  lop(i, 1, n) out, dp2[i], '\n';#ifdef LOCAL_DEBUG  fprintf(stderr, "\ntime:%.5lfms", (clock() - tim1) / (1.0 * CLOCKS_PER_SEC) * 1000);#endif  return 0;}

转载于:https://www.cnblogs.com/storz/p/10190826.html

你可能感兴趣的文章
jsf标签,jsp标签与jstl标签
查看>>
Map集合案例
查看>>
python3 在不同操作系统安装第三方库方法
查看>>
spark shuffle:分区原理及相关的疑问
查看>>
Laravel5.5 使用第三方Vendor添加注册验证码
查看>>
mysql优化
查看>>
Gradle -help
查看>>
css3做的nav
查看>>
css选择器顺序的小技巧
查看>>
互联网架构师必备技术 Docker仓库与Java应用服务动态发布那些事
查看>>
Intellij IDEA 2018.2 搭建Spring Boot 应用
查看>>
SNMP AGENT函数介绍
查看>>
Git提交到多个远程仓库(多看两个文档)
查看>>
期末大作业
查看>>
[Usaco2005 Open]Disease Manangement 疾病管理 BZOJ1688
查看>>
【Android视图效果】分组列表实现吸顶效果
查看>>
title: postGreSQL 插件 timescaleDB 安装使用 date: 2019-02-14 18:02:23
查看>>
并发容器与框架——并发容器(一)
查看>>
网络编程socket
查看>>
学界 | 伯克利最新研究:用算法解决算法偏差?公平机器学习的延迟影响
查看>>