推销员

洛咕

题意:阿明是一名推销员,他奉命到螺丝街推销他们公司的产品。螺丝街是一条死胡同,出口与入口是同一个,街道的一侧是围墙,另一侧是住户.螺丝街一共有\(N\)家住户,第\(i\)家住户到入口的距离为\(S_i\)米.由于同一栋房子里可以有多家住户,所以可能有多家住户与入口的距离相等.阿明会从入口进入,依次向螺丝街的\(X\)家住户推销产品,然后再原路走出去.阿明每走\(1\)米就会积累\(1\)点疲劳值,向第\(i\)家住户推销产品会积累\(A_i\)点疲劳值.阿明是工作狂,他想知道,对于不同的\(X\),在不走多余的路的前提下,他最多可以积累多少点疲劳值.\(n<=100000.\)

分析:贪心.对于每一个\(x\),答案一定是在 最大的\(x\)个疲劳值加上其中最远的距离乘2 与 最大的\(x-1\)个疲劳值加上最远的距离乘2 之中取\(max\).

所以我们只要预处理出以下几个东西,就可以做到每次\(O(1)\)回答询问了.将所有住户按照疲劳值\(val_i\)从大到小排序之后,记录\(sum[i]\)表示前i个住户疲劳值的和,\(far[i]\)表示前i个住户中最远的距离,\(g[i]\)表示第i到第n个住户中\(2*dis+val\)的最大值.

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<queue>
#include<map>
#include<set>
#define ll long long
using namespace std;
inline int read(){
    int x=0,o=1;char ch=getchar();
    while(ch!='-'&&(ch<'0'||ch>'9'))ch=getchar();
    if(ch=='-')o=-1,ch=getchar();
    while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();
    return x*o;
}
const int N=1e5+5;
int sum[N],far[N],g[N];
struct ppx{int dis,val;}a[N];
inline bool cmp(ppx x,ppx y){return x.val>y.val;}
int main(){
    int n=read();
    for(int i=1;i<=n;++i)a[i].dis=read();
    for(int i=1;i<=n;++i)a[i].val=read();
    sort(a+1,a+n+1,cmp);
    for(int i=1;i<=n;++i)sum[i]=sum[i-1]+a[i].val;
    for(int i=1;i<=n;++i)far[i]=max(far[i-1],a[i].dis);
    for(int i=n;i>=1;--i)g[i]=max(g[i+1],2*a[i].dis+a[i].val);
    for(int i=1;i<=n;++i)printf("%d\n",max(2*far[i]+sum[i],sum[i-1]+g[i]));
    return 0;
}

原文地址:https://www.cnblogs.com/PPXppx/p/11623372.html

时间: 2024-10-21 08:17:37

推销员的相关文章

推销员(codevs 5126)

题目描述 Description 阿明是一名推销员,他奉命到螺丝街推销他们公司的产品.螺丝街是一条死胡同,出口与入口是同一个,街道的一侧是围墙,另一侧是住户.螺丝街一共有N家住户,第i家住户到入口的距离为Si米.由于同一栋房子里可以有多家住户,所以可能有多家住户与入口的距离相等.阿明会从入口进入,依次向螺丝街的X家住户推销产品,然后再原路走出去.阿明每走1米就会积累1点疲劳值,向第i家住户推销产品会积累Ai点疲劳值.阿明是工作狂,他想知道,对于不同的X,在不走多余的路的前提下,他最多可以积累多少

2015推销员

题目描述 Description 阿明是一名推销员,他奉命到螺丝街推销他们公司的产品.螺丝街是一条死胡同,出口与入口是同一个,街道的一侧是围墙,另一侧是住户.螺丝街一共有N家住户,第i家住户到入口的距离为Si米.由于同一栋房子里可以有多家住户,所以可能有多家住户与入口的距离相等.阿明会从入口进入,依次向螺丝街的X家住户推销产品,然后再原路走出去.阿明每走1米就会积累1点疲劳值,向第i家住户推销产品会积累Ai点疲劳值.阿明是工作狂,他想知道,对于不同的X,在不走多余的路的前提下,他最多可以积累多少

noip2015普及组 推销员

5126 推销员 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 阿明是一名推销员,他奉命到螺丝街推销他们公司的产品.螺丝街是一条死胡同,出口与入口是同一个,街道的一侧是围墙,另一侧是住户.螺丝街一共有N家住户,第i家住户到入口的距离为Si米.由于同一栋房子里可以有多家住户,所以可能有多家住户与入口的距离相等.阿明会从入口进入,依次向螺丝街的X家住户推销产品,然后再原路走出去.阿明每走1米就会积累1点疲劳值,向第i家住户推销产品

“宋仲基”怎么就成了顶级推销员?

同样也是植入广告,比如国内很多商家曾在2014年上映的电影<变形金刚4>中疯狂过一把,可除了收获吐槽外,并没得到更多,韩方又是如此做到的呢? 文/张书乐 刊载于<株洲日报>4月5日天台时评版 宋仲基现在很火,火到他主演的那部韩剧<太阳的后裔>尽管在爱奇艺上是付费点播,也不耽误他在社交网络上被20亿次的话题量刷成了"爆款".然后呢?各种明星"同款"也跟着火爆起来. 这一切其实都是有预谋.有节奏和有节操的网络营销在背后推手.君不见,在

[NOIP2015]推销员

试题描述 阿明是一名推销员,他奉命到螺丝街推销他们公司的产品.螺丝街是一条死胡同,出口与入口是同一个,街道的一侧是围墙,另一侧是住户.螺丝街一共有 N 家住户,第 i 家住户到入口的距离为 Si 米.由于同一栋房子里可以有多家住户,所以可能有多家住户与入口的距离相等.阿明会从入口进入,依次向螺丝街的 X 家住户推销产品,然后再原路走出去.阿明每走 1 米就会积累 1 点疲劳值,向第 i 家住户推销产品会积累 Ai 点疲劳值.阿明是工作狂,他想知道,对于不同的 X,在不走多余的路的前提下,他最多可

世界上最伟大的推销员

世界上最伟大的推销员 作者:奥格·曼狄诺 前言 <世界上最伟大的推销员>重在励志,通过对十个羊皮卷的反复诵读,培养人的 潜意识.长时间的坚持后,潜意识便转化为有益终生的好习惯.在日常生活和工作 中好的习惯是做任何事情获得成功的关键. 下面,简要摘录一些该书的经典话语 用来做为介绍: 今天我开始新的生活. 我郑重的发誓,绝不让任何事情妨碍我新生活的成长. 在阅读这些羊皮 卷的时候,我绝不浪费一天的时间,因为时光一去不返,失去的日子是无法弥补的.我也绝不打破 每天阅读的习惯.事实上,每天在这些新习

luoguP2672 推销员

堆维护,贪心做法 题目描述 阿明是一名推销员,他奉命到螺丝街推销他们公司的产品.螺丝街是一条死胡同,出口与入口是同一个,街道的一侧是围墙,另一侧是住户.螺丝街一共有N家住户,第i家住户到入口的距离为Si米.由于同一栋房子里可以有多家住户,所以可能有多家住户与入口的距离相等.阿明会从入口进入,依次向螺丝街的X家住户推销产品,然后再原路走出去. 阿明每走1米就会积累1点疲劳值,向第i家住户推销产品会积累Ai点疲劳值.阿明是工作狂,他想知道,对于不同的X,在不走多余的路的前提下,他最多可以积累多少点疲

【题解】推销员

题目描述 阿明是一名推销员,他奉命到螺丝街推销他们公司的产品.螺丝街是一条死胡同,出口与入口是同一个,街道的一侧是围墙,另一侧是住户.螺丝街一共有N家住户,第i家住户到入口的距离为Si米.由于同一栋房子里可以有多家住户,所以可能有多家住户与入口的距离相等.阿明会从入口进入,依次向螺丝街的X家住户推销产品,然后再原路走出去. 阿明每走1米就会积累1点疲劳值,向第i家住户推销产品会积累Ai点疲劳值.阿明是工作狂,他想知道,对于不同的X,在不走多余的路的前提下,他最多可以积累多少点疲劳值. 输入格式

图书-财经:《世界上最伟大的推销员》

ylbtech-图书-财经:<世界上最伟大的推销员> 1.返回顶部 1. <世界上最伟大的推销员>是2002年在世界知识出版社出版的图书,该书作者是奥格·曼狄诺,译者是安辽. [1] 书    名:世界上最伟大的推销员 作    者:奥格·曼狄诺 原版名称:The Greatest Salesman In The World 译    者:安辽 ISBN:978-7-5012-1789-2 类    别:激励 页    数:245 定    价:16.80 出版社:世界知识出版社