题解 P2497 [SDOI2012]基站建设
解题思路
CDQ优化DP
下文中 \(pos_i\) 表示编号为 \(i\) 的位置或者说坐标。
暴力 DP 转移方程是 \(f_i=\min\limits_{1\le j<i}\{f_j+\dfrac{pos_i-pos_j}{2\sqrt{r_j}}\}+val_i\)
这样直接转移是 \(\mathcal{O}(n^2)\) 的,时间无法接受,尝试优化一下柿子。
对于 \(r_j>r_k\) 并且 \(j\) 优于 \(k\) 的条件就是:
\]
\]
\]
\]
然后我们就可以让 x 轴表示 \(\dfrac{1}{\sqrt{r_i}}\) y 轴表示 \(2\times f_i-\dfrac{pos_i}{\sqrt{r_i}}\)
由于 \(pos\) 具有单调性,因此我们只需要 CDQ ,并且对于左区间以 \(r\) 为关键字进行排序,单调队列维护就好了。
对于每一个 \(\dfrac{1}{\sqrt{r}}\) 可以预处理,时间复杂度: \(\mathcal{O}{nlog^2n}\),好像无法用归并排序减去一个 \(log\)。
注意变量的类型不然就会 100pts -> 17pts。
code
#include<bits/stdc++.h>
#define int long long
#define ull unsigned long long
#define f() cout<<"Failed"<<endl
using namespace std;
inline int read()
{
int x=0,f=1;char ch=getchar();
while(ch>'9'||ch<'0'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}
return x*f;
}
const int N=5e5+10,INF=2e18;
int n,m,q[N],pos[N];
double f[N],ans=INF,c[N];
struct Node{int pos,r,val,id;double c;}s[N];
bool comp(Node x,Node y){return x.r<y.r;}
double g(int x){return 2.0*f[x]-(1.0*pos[x])*c[x];}
void CDQ(int l,int r)
{
if(l==r) return ;
int mid=(l+r)>>1,head=1,tail=0; CDQ(l,mid);
sort(s+l,s+mid+1,comp);//对于左区间进行排序
for(int i=l;i<=mid;i++)//单调队列处理左区间可能的答案
{
while(head<tail&&(g(s[i].id)-g(s[q[tail]].id))*(s[q[tail]].c-s[q[tail-1]].c)>=(g(s[q[tail]].id)-g(s[q[tail-1]].id))*(s[i].c-s[q[tail]].c)) tail--;
q[++tail]=i;
}
for(int i=mid+1;i<=r;i++)//处理右区间答案
{
while(head<tail&&g(s[q[head+1]].id)-g(s[q[head]].id)<-s[i].pos*(s[q[head+1]].c-s[q[head]].c)) head++;
f[s[i].id]=min(f[s[i].id],(f[s[q[head]].id]+(1.0*s[i].pos-1.0*s[q[head]].pos)*s[q[head]].c/2.0)+s[i].val);
}
CDQ(mid+1,r);
}
signed main()
{
n=read(); m=read();
for(int i=1,r,val;i<=n;i++)
{
pos[i]=read(); r=read(); val=read(); f[i]=INF;
if(!r){i--;n--;continue;}
s[i]=(Node){pos[i],r,val,i,1.0/sqrt(r)}; c[i]=1.0/sqrt(r);
}
f[1]=s[1].val; CDQ(1,n);
for(int i=1;i<=n;i++)
if(s[i].pos+s[i].r>=m)
ans=min(ans,f[s[i].id]);//计算答案
printf("%.3lf",ans);
return 0;
}
题解 P2497 [SDOI2012]基站建设的更多相关文章
- 【转帖】5G基站建设下的“中国速度”:北上广深领跑全国,均超1万个
5G基站建设下的“中国速度”:北上广深领跑全国,均超1万个 https://www.laoyaoba.com/html/news/newsdetail?source=pc&news_id=73 ...
- Problem 3 基站建设 (station.cpp)———2019.10.6
在此郑重的感激wxyww大佬 wxyww tql [题目描述]小 Z 的爸爸是一位通信工程师,他所在的通信公司最近接到了一个新的通信工程建设任务,他们需要在 C 城建设一批新的基站.C 城的城市规划做 ...
- 【csp模拟赛4】基站建设 (station.cpp)
[题目描述] 小 Z 的爸爸是一位通信工程师,他所在的通信公司最近接到了一个新的通 信工程建设任务,他们需要在 C 城建设一批新的基站. C 城的城市规划做得非常好,整个城市被规整地划分为 8 行 8 ...
- DP 优化方法大杂烩 & 做题记录 I.
标 * 的是推荐阅读的部分 / 做的题目. 1. 动态 DP(DDP)算法简介 动态动态规划. 以 P4719 为例讲一讲 ddp: 1.1. 树剖解法 如果没有修改操作,那么可以设计出 DP 方案 ...
- [转帖]5G网速那么快,基站辐射会很大吗?
5G网速那么快,基站辐射会很大吗? 鲜枣课堂 2019-04-20 21:19收藏55评论6社交通讯 题图来自东方IC,本文来自微信公众号:鲜枣课堂(ID:xzclasscom),作者:小枣君 ...
- 惠州发布5G任务计划表,将出台智慧灯杆建设计划与技术规范
广东省惠州市于近日发布<惠州市贯彻落实广东省加快5G产业发展行动计划(2019-2022年)工作任务计划表>(以下简称:<5G任务计划表>). <5G任务计划表>明 ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- 读书笔记---PMBOK第五版官方中文版
以下是为了准备PMP考试时学习<PMBOK第五版官方中文版>这本书的笔记和摘要,目的是为了以后可以快速的抓住本书的核心重点复习. 引论 PMPOK的目的 收录了项目管理知识体系中被普遍认可 ...
- wifi与wimax
这几天在看文献中看到802.11a,802.11n和802.16e这几种无信通信协议标准,在网上查了相关资料后,看到有个帖子总结得不错,故将其转载过来. 转:http://blog.csdn.net/ ...
- 4G来临 IT业转型之路当在不远
摘 要:4G商用未启,品牌营销争夺已经展开.目前,除了中国移动推出全新4G品牌“andM”之外,中国电信和中国联通均选择继续沿用3G的品牌. 4G商用未启,品牌营销争夺已经展开.12月10日,中国电信 ...
随机推荐
- PyTorch分分钟快速安装
PyTorch的前身是Torch,其底层和Torch框架一样,但是使用Python重新写了很多内容,不仅更加灵活,支持动态图,而且提供了Python接口. 它是由Torch7团队开发,是一个以Pyth ...
- SysOM 案例解析:消失的内存都去哪了 !| 龙蜥技术
简介: 这儿有一份"关于内存不足"排查实例,请查收. 文/系统运维 SIG 在<AK47 所向披靡,内存泄漏一网打尽>一文中,我们分享了slab 内存泄漏的排查方式和工 ...
- RocketMQ 5.0: 存储计算分离新思路
简介: 在阿里云上,RocketMQ 的商业化产品也以弹性云服务的形式为全球数万个用户提供企业级的消息解决方案,被广泛应用于互联网.大数据.移动互联网.物联网等领域的业务场景,成为了业务开发的首选消息 ...
- 斩获大奖|阿里云PolarDB-X引领云原生分布式数据库新时代
简介:阿里云原生分布式数据库PolarDB-X荣获"2021年度最佳分布式数据库". 12月15-16日,以"引领分布式云变革 助力湾区数字经济"为主题的全球分 ...
- 划重点|iOS15正式发布, 全新的通知推送系统,你必须要知道!
简介: 今年友盟+联合达摩院决策智能实验室讲算法技术,推出国内首个智能推送功能,帮助产品运营人员实现一键式触达的精细化运营.通过精心打磨的在线学习与优化算法,对推送人群与推送文案进行精准匹配,最大化 ...
- [Go] 注意 go build -o <output> 选项的准确含义
-o <output> 选项强制执行把构建的可执行文件写入到目标文件或者目标目录中. 如果 output 是已存在的目录,那么所有构建好的文件都将写入到该目录中. 注意:如果目录不存在的话 ...
- 2018-5-28-WPF-Process.Start-出现-Win32Exception-异常
title author date CreateTime categories WPF Process.Start 出现 Win32Exception 异常 lindexi 2018-05-28 10 ...
- 02 Xpath Helper介绍
目录 参考文档 下载地址 安装 使用 参考文档 xpath helper https://www.cnblogs.com/ChevisZhang/p/12869582.html http://c.bi ...
- NASM中的内存引用
NASM对于内存的引用规则非常简单,如果想访问内存中的内容,就将地址用[]包围,如果没有[],就表示是地址本身,而不是内容. mov ax,[wordvar] mov ax,[wordvar+1] m ...
- nmcli device status状态为unmanaged
遇到报错:(device lo not available because device is strictly unmanaged) nmcli device status 查看设备状态 nmcli ...