jzoj3169-[GDOI2013模拟4]生产汽车【斜率优化dp,单调队列,二分】

正题


题目大意

nnn个人mmm辆车。
人有tit_iti,车有fjf_jfj。第i个人修第j俩车时间是ti∗fjt_i*f_jtifj
一辆车要每个人都修一遍,且一个人修好后要求下一个人没有工作。对于每辆车找一个修理开始时间要求总修理时间最小(得按顺序修)。


解题思路

定义ti=∑i=1mtit_i=\sum_{i=1}^mt_iti=i=1mti
gig_igi表示第iii辆车开始的时间,然后答案就是gm+fn∗sig_m+f_n*s_igm+fnsi
且有gi=gi−1+max⁡{tk∗fi−1−tk−1∗fi}g_i=g_{i-1}+\max\{t_k*f_{i-1}-t_{k-1}*f_i\}gi=gi1+max{tkfi1tk1fi}
时间复杂度O(nm)O(nm)O(nm)
愉快TLETLETLE,我们考虑斜率优化
对于决策j,kj,kj,k,且kkkjjj
那有tk∗fi−1−tk−1∗fi>tj∗fi−1−tj−1∗fit_k*f_{i-1}-t_{k-1}*f_i>t_j*f_{i-1}-t_{j-1}*f_itkfi1tk1fi>tjfi1tj1fi
⇒(tk−tj)∗fi−1>(tk−1−tj−1)∗fi\Rightarrow (t_k-t_j)*f_{i-1}>(t_{k-1}-t_{j-1})*f_i(tktj)fi1>(tk1tj1)fi
⇒tk−tjtk−1−tj−1>fifi−1\Rightarrow \frac{t_k-t_j}{t_{k-1}-t_{j-1}}>\frac{f_i}{f_{i-1}}tk1tj1tktj>fi1fi

然后我们发现fifi−1\frac{f_i}{f_{i-1}}fi1fi并不是单调递增的,但是tk−tjtk−1−tj−1\frac{t_k-t_j}{t_{k-1}-t_{j-1}}tk1tj1tktj肯定越大越优,所以我们可以按照tk−tjtk−1−tj−1\frac{t_k-t_j}{t_{k-1}-t_{j-1}}tk1tj1tktj维护一个单调递增的单调队列,然后就可以对于每个fifi−1\frac{f_i}{f_{i-1}}fi1fi在单调队列上二分。
时间复杂度O(mlog⁡n)O(m\log n)O(mlogn)


codecodecode

#include<cstdio>
#include<algorithm>
#define ll long long
using namespace std;
const ll N=110000; 
ll n,m,t[N],f[N],q[N],g[N],tail;
double tan_(ll x,ll y)
{return (t[x]-t[y])/(double)(t[x-1]-t[y-1]);}
int main()
{scanf("%lld%lld",&n,&m);for(ll i=1;i<=n;i++)scanf("%lld",&t[i]),t[i]+=t[i-1];for(ll i=1;i<=m;i++)scanf("%lld",&f[i]);for(ll i=1;i<=n;i++){while(tail>1&&tan_(i,q[tail])>tan_(q[tail],q[tail-1])) tail--;q[++tail]=i;}for(ll i=2;i<=m;i++){ll l=0,r=tail;double k=(double)f[i]/(double)f[i-1];while(l<r){ll mid=(l+r)/2;if(tan_(q[mid+1],q[mid])>k) l=mid+1;else r=mid;}g[i]=g[i-1]+t[q[l]]*f[i-1]-t[q[l]-1]*f[i];}printf("%lld",g[m]+t[n]*f[m]);
} 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/322576.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jzoj3170-[GDOI2013模拟4]挑选玩具【容斥,状态压缩,分治】

正题 题目大意 有nnn个箱子放了若干个玩具&#xff0c;要求选择一些箱子使得mmm种玩具都有&#xff0c;求方案总数。 解题思路 设fSf_SfS​表示选择只有在集合为SSS的方案数。 然后答案考虑容斥&#xff0c;那么答案就是∑S(2(f(∼S))−1)∗(−1)∣S∣\sum_S (2^{(f_{(\sim S…

Spring Boot 消息队列 RocketMQ 入门

转载自 芋道 Spring Boot 消息队列 RocketMQ 入门 摘要: 原创出处 http://www.iocoder.cn/Spring-Boot/RocketMQ/ 「芋道源码」欢迎转载&#xff0c;保留摘要&#xff0c;谢谢&#xff01; 本文在提供完整代码示例&#xff0c;可见 https://github.com/YunaiV/SpringBoot-Lab…

python正则获取网页标签里面的内容

# -*- coding:utf-8 -*- import re str "<option value2018010401>2018级播音与主持艺术1班</option><option value2018080601>2018级财务管理1班</option><option value2018080602>2018级财务管理2班</option><option value2018…

C#和NewSQL更配 —— TiDB入门

一、背景在上一篇尝试CockroachDB&#xff08;传送门在此&#xff1a;http://www.cnblogs.com/Zachary-Fan/p/cockroachdb_net_csharp.html&#xff09;的过程中&#xff0c;发现如果从常规的RDBMS迁移过去几乎是不太可能的事情&#xff0c;所以掉头开始调研一下也是这2年比较火…

jzoj3171-[GDOI2013模拟4]重心【真·物理,二分】

正题 题目大意 若干个长2高1的长方形且有不同的质量。 对于若干个矩形的重心定义为∑mi∗xi∑mi\frac{\sum m_i*x_i}{\sum m_i}∑mi​∑mi​∗xi​​ 要求每个矩形上面的所有矩形的x重心跟该矩形的x中点相距不超过1。 最底下的矩阵的右下角摆放在(−2,0)(-2,0)(−2,0)的位置求…

Mysql调优你不知道这几点,就太可惜了

转载自 Mysql调优你不知道这几点&#xff0c;就太可惜了 一、Mysql的逻辑分层 Mysql分为&#xff1a;连接层、服务层、引擎层、存储层。 当客户端向服务端发起操作请求的时候&#xff0c;执行过程是这样的&#xff1a; 1、客户端端与Mysql服务端的连接层建立连接&#xff…

DOMException: Failed to execute ‘appendChild‘ on ‘Node‘: This node type does

在使用nuxt时出现了下面得错误 DOMException: Failed to execute ‘appendChild’ on ‘Node’: This node type does 最后把created里的方法放到mounted里就行了

Unity/DotNetty中集成Lidgren实现可靠UDP

lidgren有几个优点&#xff1a;分channel&#xff0c;每个channel都有单独的消息队列&#xff0c;不互相影响。每个消息可以单独选择使用可靠/不可靠传输。支持内网穿透自带加密算法。前端Unity&#xff1a;先贴一张前端使用的网络框架图&#xff1a;Lidgren的Github地址&#…

欢乐纪中A组周六赛【2019.4.13】

前言 做A组被虐好惨 成绩 RankRankRank是有算别人的 RankRankRankPersonPersonPersonScoreScoreScoreAAABBBCCC222巨佬WHF巨佬WHF巨佬WHF140140140404040100100100000222巨佬ZZY巨佬ZZY巨佬ZZY140140140404040100100100000555巨佬HJW巨佬HJW巨佬HJW10010010010010010000000014…

@restcontroller和@controller区别

共同点&#xff1a;都是用来表示Spring某个类的是否可以接收HTTP请求 不同点&#xff1a; controller表示的是一般是页面处理 restcontroller则是json字符串常用的法则

面试官问:如果MySQL引起CPU消耗过大,你会怎么优化

转载自 面试官问&#xff1a;如果MySQL引起CPU消耗过大&#xff0c;你会怎么优化 谁在消耗cpu? 用户系统IO等待软硬中断空闲 祸首是谁&#xff1f; 用户 用户空间CPU消耗&#xff0c;各种逻辑运算 正在进行大量tps 函数/排序/类型转化/逻辑IO访问… 用户空间消耗大量cpu&…

【译】使用Jwt身份认证保护 Asp.Net Core Web Api

原文出自Rui Figueiredo的博客&#xff0c;原文链接《Secure a Web Api in ASP.NET Core》摘要&#xff1a;这篇文章阐述了如何使用 Json Web Token (Jwt)方式 来配置身份验证中间件。这种方式十分适合移动App 后端等不使用cookie的后端程序。网络上有许多资源可以教你如何保护…

P1344-[USACO4.4]追查坏牛奶Pollutant Control【网络流,最小割】

正题 题目链接:https://www.luogu.org/problemnew/show/P1344 题目大意 要求1不能到n点需要去掉的边的权值之和最小&#xff0c;在这样的情况下求最少去掉的边。 解题思路 对于每条边的边权分为两部分一个是权值&#xff0c;一个是割掉的数量&#xff0c;然后前者比后者优先…

redis配置密码

redis没有实现访问控制这个功能&#xff0c;但是它提供了一个轻量级的认证方式&#xff0c;可以编辑redis.conf配置来启用认证。 1、初始化Redis密码&#xff1a; 在配置文件中有个参数&#xff1a; requirepass 这个就是配置redis访问密码的参数&#xff1b; 比如 requirep…

禁用Cookie后,Session怎么样使用

转载自 禁用Cookie后&#xff0c;Session怎么样使用 在上篇中更多的是在分析通过Session Cookie这一方式&#xff0c;在每次请求时都将 sessionId以Cookie的形式发到服务端&#xff0c;来保持一致。这也是许多人印象中的 Session在浏览器关闭之后就失效这一说法的来源。 其…

ASP.NET MVC使用Oauth2.0实现身份验证

随着软件的不断发展&#xff0c;出现了更多的身份验证使用场景&#xff0c;除了典型的服务器与客户端之间的身份验证外还有&#xff0c;如服务与服务之间的(如微服务架构)、服务器与多种客户端的(如PC、移动、Web等)&#xff0c;甚至还有需要以服务的形式开放给第三方的&#x…

尽力去帮助一个陌生人

看到群里发布的家里母亲患癌的情况&#xff0c;心里很是触动&#xff0c;我想尽力去帮助他们 去沟通&#xff0c;了解具体情况&#xff0c;去办公室找王主任确认并了解相关事宜 我的想法是在与学校沟通之后&#xff0c;在应数专业内&#xff0c;做一个地推&#xff0c;让同学们…

P3575-[POI2014]DOO-Around the world【环形dp】

正题 题目大意:https://www.luogu.org/problemnew/show/P3575 题目大意 一个环&#xff0c;上面有若干个点&#xff0c;若干个询问xxx。 表示上一个降落点和下一个降落点距离不能超过xxx&#xff0c;然后求至少要降落多少次(起点可以任意) 解题思路 首先明显环形dpdpdp&…

Spring Boot API 接口文档 Swagger 入门

转载自 芋道 Spring Boot API 接口文档 Swagger 入门 摘要: 原创出处 http://www.iocoder.cn/Spring-Boot/Swagger/ 「芋道源码」欢迎转载&#xff0c;保留摘要&#xff0c;谢谢&#xff01; 本文在提供完整代码示例&#xff0c;可见 https://github.com/YunaiV/SpringBoot-Lab…

ICanPay 统一支付网关

https://github.com/hiihellox10/ICanPay 统一支付网关。对原代码优化。支持NET46和NETSTANDARD2_0。支持支付宝&#xff0c;微信&#xff0c;银联支付渠道通过Web&#xff0c;App&#xff0c;Wap&#xff0c;QRCode方式支付。简化订单的创建、查询、退款跟接收网关返回的支付通…