【题目描述】

阿明是一名推销员,他奉命到螺丝街推销他们公司的产品。螺丝街是一条死胡同,出口与入口是同一个,街道的一侧是围墙,另一侧是住户。螺丝街一共有N家住户,第i家住户到入口的距离为Si米。由于同一栋房子里可以有多家住户,所以可能有多家住户与入口的距离相等。阿明会从入口进入,依次向螺丝街的X家住户推销产品,然后再原路走出去。

阿明每走1米就会积累1点疲劳值,向第i家住户推销产品会积累Ai点疲劳值。阿明是工作狂,他想知道,对于不同的X,在不走多余的路的前提下,他最多可以积累多少点疲劳值。

【输入】

第一行有一个正整数N,表示螺丝街住户的数量。

接下来的一行有N个正整数,其中第i个整数Si表示第i家住户到入口的距离。数据保证S1≤S2≤…≤Sn<10^8。

接下来的一行有N个正整数,其中第i个整数Ai表示向第i户住户推销产品会积累的疲劳值。数据保证Ai<10^3。

【输出】

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

【输入样例】

5
1 2 3 4 5
1 2 3 4 5

【输出样例】

15
19
22
24
25

【提示】

【输入输出样例1说明】

X=1:向住户5推销,往返走路的疲劳值为5+5,推销的疲劳值为5,总疲劳值为15。

X=2:向住户4、5推销,往返走路的疲劳值为5+5,推销的疲劳值为4+5,总疲劳值为5+5+4+5=19。

X=3:向住户3、4、5推销,往返走路的疲劳值为5+5,推销的疲劳值3+4+5,总疲劳值为5+5+3+4+5=22。

X=4:向住户2、3、4、5推销,往返走路的疲劳值为5+5,推销的疲劳值2+3+4+5,总疲劳值5+5+2+3+4+5=24。

X=5:向住户1、2、3、4、5推销,往返走路的疲劳值为5+5,推销的疲劳值1+2+3+4+5,总疲劳值5+5+1+2+3+4+5=25。

样例测试点#2

输入:

5

1 2 2 4 5

5 4 3 4 1

输出:

12

17

21

24

27

【输入输出样例2说明】

X=1:向住户4推销,往返走路的疲劳值为4+4,推销的疲劳值为4,总疲劳值4+4+4=12。

X=2:向住户1、4推销,往返走路的疲劳值为4+4,推销的疲劳值为5+4,总疲劳值4+4+5+4=17。

X=3:向住户1、2、4推销,往返走路的疲劳值为4+4,推销的疲劳值为5+4+4,总疲劳值4+4+5+4+4=21。

X=4:向住户1、2、3、4推销,往返走路的疲劳值为4+4,推销的疲劳值为5+4+3+4,总疲劳值4+4+5+4+3+4=24。或者向住户1、2、4、5推销,往返走路的疲劳值为5+5,推销的疲劳值为5+4+4+1,总疲劳值5+5+5+4+4+1=24。

X=5:向住户1、2、3、4、5推销,往返走路的疲劳值为5+5,推销的疲劳值为5+4+3+4+1,

总疲劳值5+5+5+4+3+4+1=27。

【数据说明】

对于20%的数据,1≤N≤20;

对于40%的数据,1≤N≤100;

对于60%的数据,1≤N≤1000;

对于100%的数据,1≤N≤100000。

先枚举找到从起点到每个点推销再返回的疲劳值,找到最大的点id以及疲劳值maxx

假如id为红色的点,黑点左边的表示推销的疲劳值,右边表示从黑点到红点的距离

从红点出发,如果我们往下走,那么maxx+=推销的疲劳值;如果往上,那么maxx+=绿色的数字*2+推销点的疲劳值

我们将这些全部记录一下,进行排序

没听懂的看注释

最终代码如下

#include<bits/stdc++.h>
using namespace std;
long long s[100001],a[100001];
long long sp[100001];
int main() {int n;cin>>n;for(int i=1; i<=n; i++)scanf("%lld",&s[i]);for(int i=1; i<=n; i++)scanf("%lld",&a[i]);//枚举从起点到每个点推销+返回的值long long maxx=-1,id;for(int i=1; i<=n; i++) {sp[i]=s[i]*2+a[i];if(sp[i]>maxx) {maxx=sp[i];id=i;}}cout<<maxx;a[id]=0;//id到自己是0//计算从id到上面的点的值for(int i=id+1; i<=n; i++) {//上面的点要再加上到id的距离*2,下面的点因为是从id往下走的不用多走就是推销的疲劳值a[i]=a[i]+(s[i]-s[id])*2;}//排序sort(a+1,a+1+n);for(int i=n; i>=2; i--)    {//注意要从大到小反过来maxx+=a[i];printf("\n%lld",maxx);}return 0;
}

1972:【15NOIP普及组】推销员相关推荐

  1. 信息学奥赛一本通 1970:【15NOIP普及组】扫雷游戏 | OpenJudge NOI 1.8 14:扫雷游戏地雷数计算 | 洛谷 P2670 [NOIP2015 普及组] 扫雷游戏

    [题目链接] ybt 1970:[15NOIP普及组]扫雷游戏 OpenJudge NOI 1.8 14:扫雷游戏地雷数计算 洛谷 P2670 [NOIP2015 普及组] 扫雷游戏 [题目考点] 1 ...

  2. 信息学奥赛一本通 1100:金币 | 1969:【15NOIP普及组】金币 | OpenJudge NOI 1.5 45 | 洛谷 P2669 [NOIP2015 普及组] 金币

    [题目链接] ybt 1100:金币 ybt 1969:[15NOIP普及组]金币 OpenJudge NOI 1.5 45:金币 洛谷 P2669 [NOIP2015 普及组] 金币 [题目考点] ...

  3. 【2015NOIP普及组】T4:推销员 试题解析

    [15NOIP普及组]推销员 时间限制: 1000 ms         内存限制: 131072 KB [题目描述] 阿明是一名推销员,他奉命到螺丝街推销他们公司的产品.螺丝街是一条死胡同,出口与入 ...

  4. 【2015NOIP普及组】T1:金币 试题解析

    [15NOIP普及组]金币 时间限制: 1000 ms         内存限制: 65536 KB [题目描述] 国王将金币作为工资,发放给忠诚的骑士.第一天,骑士收到一枚金币:之后两天(第二天和第 ...

  5. 近年NOIP普及组复赛题目的简单讲解

    NOIP2015普及组复赛 整套题都出得不错,难度适中,层次分明 建议同学们在做题的时候还是先在草稿纸上分析,把关键算法的伪代码写出来,然后设计数据进行静态查错,没有问题后再到电脑上敲出代码.实际效率 ...

  6. 历年CSP-J(NOIP普及组)分类汇总目录

    内容持续更新中... ... [2022CSPJ普及组]T1.乘方                    数学问题 [2022CSPJ普及组]T2.解密                    数学问题 ...

  7. NOIP普及组历届真题(1997~2018)

    供大家刷题. 先上快捷的查看方式:NOIP普及组历届真题 第二页 来自洛谷--一个很好的刷题网站 剩下是具体题目和难度以及是第几年的题. P1002 过河卒 NOIp普及组 2002 普及- P100 ...

  8. NOIP普及组历年题目

    文章目录 2003 413. 乒乓球 414. 数字游戏 415. 栈 416. 麦森数 2004 417. 不高兴的津津 418. 花生采摘 419. FBI树 420. 火星人 2005 421. ...

  9. CSP-J (NOIP普及组) 历年复赛真题考察内容(1998~2021)

    TZOJ题目分类 本博客原文地址:https://www.cnblogs.com/BobHuang/p/14522022.html 其中,1.较简单题26题左右:2.动态规划17题,其中9题较好做:3 ...

  10. NOIP2005普及组第4题 循环

    NOIP2005普及组第4题 循环 时间限制: 1 Sec  内存限制: 128 MB 提交: 27  解决: 6 [提交][状态][讨论版][命题人:外部导入] 题目描述 乐乐是一个聪明而又勤奋好学 ...

最新文章

  1. C++ 字符ASC排序
  2. 我决定开发自己的第一款iPhone应用
  3. python提取cad坐标到excel_使用python来操作autocad,并且将坐标点转换成cad可见对象...
  4. 苹果Swift语言入门教程【中文版】
  5. 使用VScode + PicGo 写markdown 以及github图片加载不出的问题
  6. java语言入门要多久,王者笔记!
  7. 搜索系统中的纠错问题
  8. 编码器正反转识别方法
  9. 当了两天向导,带他进行了上海都市游885
  10. 大学实验室面试总结(机器学习)
  11. yocs_velocity_smoother源码编译
  12. 【USACO】山峰暸望
  13. 第四章分支结构程序设计
  14. Python下载网易云音乐歌单
  15. 微信是怎么打造平台型生态商业模式的?
  16. Linux下的按键精灵xdotool
  17. 日志(Logger)
  18. C语言中访问结构体成员时 点 . 和 箭头 - 的区别
  19. terminal 命令行 光标移动 行首 行尾
  20. Linux权限“suid”与“guid”设置

热门文章

  1. 简单的快速提取Fbank特征的方法
  2. 怎么引入oracle驱动包,Maven引入oracle驱动包
  3. Nextflow patterns
  4. 计算机专业法语词汇,法语计算机及网络词汇(4)
  5. 微软通过云存储插件简化Docker容器迁移
  6. 新版淘客订单API【需token】
  7. linux进程管理工具:supervisor
  8. device_register分析
  9. itextword加公章 java_新手如何使用itext7生成pdf盖章
  10. 在线Java/C++/C语言/Python/web网页编辑器(IDE)整理