推销员(codevs 5126)

题目描述 Description

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

输入描述 Input Description

第一行有一个正整数N,表示螺丝街住户的数量。
接下来的一行有N个正整数,其中第i个整数Si表示第i家住户到入口的距离。数据保证S1≤S2≤…≤Sn<10^8。
接下来的一行有N个正整数,其中第i个整数Ai表示向第i户住户推销产品会积累的疲劳值。数据保证Ai<10^3。

输出描述 Output Description

输出N行,每行一个正整数,第i行整数表示当X=i时,阿明最多积累的疲劳值。

样例输入 Sample Input

【样例1】
5
1 2 3 4 5
1 2 3 4 5

【样例2】
5
1 2 2 4 5
5 4 3 4 1

样例输出 Sample Output

【样例1】
15
19
22
24
25

【样例2】
12
17
21
24
27

数据范围及提示 Data Size & Hint

1≤N≤100000
注:请用 scanf 输入。

/*刚开始想了一个贪心思路,不知道对不对,然而真的就对了,只不过是O(n^2)的,TLE,然后用优先队列优化就过了。贪心思路首先我们明确,找前i个住户一定是在i-1的基础上找的,具体方法是记录当前我们最远找到的村庄位置now,因为当你往回找和往前找时走的路程是不同的,对于now来说,我们有两种决策,一种是向上找,一种是向下找,找到最大值加入ans,这样是O(n^2)的方法。然而我们发现向上找的部分会随now的变大而逐渐不浪费时间,向下找的部分则会重复找很多次,所以我们搞一个优先队列,再记录一个当前最远的入队元素位置from,每次当我们更新now时,就把from+1到now内的元素放入优先队列,这样我们在下一次向下找的时候就不用再循环一遍,而是直接从优先队列中取头元素就好了。 
*/
#include<cstdio>
#include<iostream>
#include<queue>
#include<algorithm>
#define M 100010
using namespace std;
int n,ans;
struct node
{int v,pos;bool operator< (node x)const{return v<x.v;}
};node a[M],b;
priority_queue<node> q;
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d",&a[i].pos);for(int i=1;i<=n;i++)scanf("%d",&a[i].v);b.v=0;b.pos=0;q.push(b);int now=0,from;for(int i=1;i<=n;i++){b=q.top();int mx=b.v,p=0;for(int j=now+1;j<=n;j++)if((a[j].pos-a[now].pos)*2+a[j].v>mx){mx=(a[j].pos-a[now].pos)*2+a[j].v;p=j;}if(p){b.pos=p;b.v=mx;from=now;now=p;q.push(b);for(int j=from+1;j<now;j++)q.push(a[j]);}node b=q.top();ans+=b.v;q.pop();printf("%d\n",ans);}return 0;
}
View Code

 

转载于:https://www.cnblogs.com/harden/p/5811386.html

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

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

相关文章

python管理系统web版_Python学生管理系统(web网页版)-Go语言中文社区

前言&#xff1a;本项目是使用Python的Django的web框架搭建的&#xff0c;是一个完整的学生管理系统&#xff0c;功能包括基本的增删改查 项目演示图&#xff1a; 首页展示数据的页面&#xff08;index.html&#xff09;添加学生的页面&#xff08;add.html&#xff09;搜索学生…

hog函数的用法 python_Python常见内置函数用法(三)

本文作者&#xff1a;孙雪丽文字编辑&#xff1a;周聪聪技术总编&#xff1a;张学人重大通知&#xff01;&#xff01;&#xff01;2019年6月22日至24日在河南郑州举行Stata编程技术特别训练营&#xff0c;招生工作已经圆满结束。另外爬虫俱乐部将于2019年7月5日至7月8日在武汉…

pytorch打印模型每层的结构

可以用torchsummary下的summary方法&#xff0c;或者torchinfo下的summary方法&#xff0c;两者功能是一样的 以torchsummary下的summary方法为例说明 首先通过pip install torchsummary 之后在代码中&#xff1a; from torchsummary import summarysummary(model, (1, 28,…

学会动态丨中国人工智能学会成功召开重大科学问题《智能生成机理》研讨会...

来源&#xff1a;中国人工智能学会为配合国家科技发展的重大需求&#xff0c;推进重大科学问题的研究&#xff0c;形成相应的政策建议&#xff0c;中国人工智能学会于9月29日上午9时在北邮科技大厦召开了“重大科学问题《智能生成机理》研讨会”。现场专家们通过深入交流&#…

Linux文件(区域)锁函数 -- open()、fcntl()

一、什么是文件锁定 对于锁这个字&#xff0c;大家一定不会陌生&#xff0c;因为我们生活中就存在着大量的锁&#xff0c;它们各个方面发挥着它的作用&#xff0c;现在世界中的锁的功能都可归结为一句话&#xff0c;就是阻止某些人做某些事&#xff0c;例如&#xff0c;门锁就是…

**Java有哪些悲观锁的实现_「Java并发编程」何谓悲观锁与乐观锁,Java编程你会吗...

何谓悲观锁与乐观锁悲观锁乐观锁两种锁的使用场景乐观锁常见的两种实现方式1. 版本号机制2. CAS算法乐观锁的缺点1 ABA 问题2 循环时间长开销大3 只能保证一个共享变量的原子操作CAS与synchronized的使用情景何谓悲观锁与乐观锁乐观锁对应于生活中乐观的人总是想着事情往好的方…

python分配内存_CPython内存分配

其中大部分内容在C API文档的Memory Management章节中得到回答.一些文档比您要求的更容易.有关详细信息,您必须转到源代码.没有人会愿意这样做,除非你选择一个特定的版本. (至少2.7.5,2.7.6,3.3.2之前,3.3.3之前和3.4之前对于不同的人来说将是有趣的.)obmalloc.c文件的来源是您…

现代版的大案牍术:数字孪生在城市的应用

来源&#xff1a;阿里研究院最近大火的电视剧《长安十二时辰》中&#xff0c;靖安司大规模启用秘密核武器——大案牍术&#xff0c;书吏们从各个部门汇总来的人员往来、钱粮货物流水中寻找到蛛丝马迹甚至未卜先知&#xff0c;再结合长安版的5G通讯——望楼通信与大沙盘&#xf…

关于样式表setStyleSheet

在Qt中设置widget背景颜色或者图片方法很多种&#xff1a;重写paintEvent() , 调色板QPalette , 样式表setStyleSheet等等。 但是各种方法都有其注意事项&#xff0c;如果不注意则很容易陷入麻烦中。 1&#xff1a;setStyleSheet() 这个函数我一直很喜欢使用&#xff0c;因为只…

react打包后图片丢失_使用 webpack 搭建 React 项目

简评&#xff1a;相信很多开发者在入门 react 的时候都是使用 create-react-app 或 react-slingshot 这些脚手架来快速创建应用&#xff0c;当有特殊需求&#xff0c;需要修改 eject 出来的 webpack 配置文件时&#xff0c;面对各种配置项不知如何下手&#xff0c;本文会介绍如…

揭秘5G+AI时代的机器人世界!七大核心技术改变人类生活【附下载】| 智东西内参...

来源&#xff1a; 智东西AI 和 5G 与机器人技术结合&#xff0c;正在不断催生新的消费电子品类。AI 解决机器理解世界&#xff0c;以及人机交互的问题。5G 拓展机器人的活动边界&#xff0c;并为机器人提供更大的算力和存储空间&#xff08;云协作机器人&#xff09; 。根据 IF…

TSQL编程

1.索引添加索引&#xff0c;设计界面&#xff0c;在任何一列前右键--索引/键--点击进入添加某一列为索引 2.视图 视图就是我们查询出来的虚拟表创建视图&#xff1a;create view 视图名 as SQL查询语句,分组&#xff0c;排序&#xff0c;in 等都不能写视图的用法&#xff1a; s…

python方向键控制角色_用python和pygame游戏编程入门-控制角色移动

在上一节中我们知道了事件&#xff0c;以及如何捕捉键盘事件进行响应&#xff0c;本届我们结合第一节何上一节的内容&#xff0c;做一个用键盘控制角色移动的功能&#xff0c;代码如下&#xff1a; #!/usr/bin/env python #指定图像文件名称 background_image_filename ./img/…

arcgis fishnet 单位_ArcGIS中使用Create Fishnet生成格网

ArcGIS中使用Create Fishnet生成格网1.如果单元格的宽和高定义为0&#xff0c;那么必须指定行与列的数目以及格网对角的坐标2.格网的范围可以手动输入&#xff0c;也可以引用已有数据为模板。如果输入一个模版&#xff0c;格网的起始坐标和Y轴的坐标就被自动填充了&#xff0c;…

让人工智能有情感的秘诀!清华权威报告看透情感计算【附下载】

来源&#xff1a; 智东西40 多年前&#xff0c;诺贝尔奖得主 Herbert Simon 在认知心理学方面强调&#xff0c;解决问题论要结合情感的影响。情感的识别和表达对于信息的交流和理解是必需的&#xff0c;也是人类最大的心理需求之一。人类的认知、行为等几乎都要受到情感的驱动&…

端口扫描的目的

端口扫描的目的是扫描大范围的主机连接一系列的 TCP 端口&#xff0c;判断主机开放了哪些服务&#xff0c;这些开放的端口往往与一定的服务相对应&#xff0c;通过这些开放的端口&#xff0c;就能了解主机运行的服务&#xff0c;然后就可以进一步整理和分析这些服务可能存在的漏…

记录用户转成超级用户的文件名字_一分钟了解Linux用户

Linux系统是一个多用户多任务的分时操作系统&#xff0c;任何一个要使用系统资源的用户&#xff0c;都必须首先向系统管理员申请一个账号&#xff0c;然后以这个账号的身份进入系统。用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪&#xff0c;并控制他们对系统资…

桥接模式和nat模式

一、桥接模式&#xff08;bridged networking&#xff09; 在桥接模式下&#xff0c;VMWare虚拟出来的操作系统就像是局域网中一台独立的主机&#xff0c;它能够访问网内任何一台机器。 在桥接模式下&#xff0c;你必须手工为虚拟系统配置IP地址、子网掩码&#xff0c;并且还要…

四维图新地图坐标_移动端地图技术分享

本人现就职于国内某地图导航公司&#xff0c;这篇文章是我前段时间在公司组织技术分享的一个PPT&#xff0c;文章内容也主要由这个PPT的内容为主&#xff0c;通过这篇文章可以很好的帮你了解地图导航这个行业的相关技术。PPT内容主要包括地图相关专业知识、百度和高德SDK整体框…