题解 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日,中国电信 ...
随机推荐
- spring boot 配置文件占位符和多环境配置 [七]
配置文件占位符 person.last-name=zhangsan person.age=${random.int} person.birth=2017/12/15 person.boss=false ...
- 力扣33(java&python)-搜索旋转排序数组(中等)
题目: 整数数组 nums 按升序排列,数组中的值 互不相同 . 在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 ...
- 聊聊 Linux iowait
哈喽大家好,我是咸鱼. 我们在使用 top 命令来查看 Linux 系统整体 CPU 使用情况的时候,往往看的是下面这一列: %Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 ...
- 阿里云EMAS移动测试,帮您快速掌握移动端兼容性测试技巧
简介: 兼容性测试用于验证应用在不同设备上进行安装/启动/登录/不同版本覆盖安装/卸载等操作时,是否存在兼容性问题:如界面适配问题.应用性能等,现阿里云EMAS套餐免费试用,帮您快速掌握移动端兼容性测 ...
- 阿里开源支持10万亿模型的自研分布式训练框架EPL(EasyParallelLibrary)
简介:EPL背后的技术框架是如何设计的?开发者可以怎么使用EPL?EPL未来有哪些规划?今天一起来深入了解. 作者 | 王林.飒洋 来源 | 阿里技术公众号 一 导读 最近阿里云机器学习PAI平 ...
- 饿了么EMonitor演进史
简介: 可观测性作为技术体系的核心环节之一,跟随饿了么技术的飞速发展,不断自我革新. 序言 时间回到2008年,还在上海交通大学上学的张旭豪.康嘉等人在上海创办了饿了么,从校园外卖场景出发,饿了么一步 ...
- Quick BI的可视分析之路
简介: Quick BI是专为云上用户量身打造的智能数据分析和可视化BI产品,帮助企业快速完成从传统的数据分析到数据云化+分析云化的转变,将企业的业务数据产出后以最快的速度被推送到各组织侧消费使用.本 ...
- 一种命令行解析的新思路(Go 语言描述)
简介: 本文通过打破大家对命令行的固有印象,对命令行的概念解构后重新梳理,开发出一种功能强大但使用极为简单的命令行解析方法.这种方法支持任意多的子命令,支持可选和必选参数,对可选参数可提供默认值,支 ...
- 庖丁解牛-图解MySQL 8.0优化器查询转换篇
简介: 在<庖丁解牛-图解MySQL 8.0优化器查询解析篇>一文中我们重点介绍了MySQL最新版本8.0.25关于SQL基本元素表.列.函数.聚合.分组.排序等元素的解析.设置和转换过 ...
- 延迟绑定与retdlresolve
延迟绑定与retdlresolve 我们以前在ret2libc的时候,我们泄露的libc地址是通过延迟绑定实现的,我们知道,在调用libc里面的函数时候,它会先通过plt表和gor表绑定到,函数真实地 ...