1972:【15NOIP普及组】推销员
【题目描述】
阿明是一名推销员,他奉命到螺丝街推销他们公司的产品。螺丝街是一条死胡同,出口与入口是同一个,街道的一侧是围墙,另一侧是住户。螺丝街一共有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普及组】推销员相关推荐
- 信息学奥赛一本通 1970:【15NOIP普及组】扫雷游戏 | OpenJudge NOI 1.8 14:扫雷游戏地雷数计算 | 洛谷 P2670 [NOIP2015 普及组] 扫雷游戏
[题目链接] ybt 1970:[15NOIP普及组]扫雷游戏 OpenJudge NOI 1.8 14:扫雷游戏地雷数计算 洛谷 P2670 [NOIP2015 普及组] 扫雷游戏 [题目考点] 1 ...
- 信息学奥赛一本通 1100:金币 | 1969:【15NOIP普及组】金币 | OpenJudge NOI 1.5 45 | 洛谷 P2669 [NOIP2015 普及组] 金币
[题目链接] ybt 1100:金币 ybt 1969:[15NOIP普及组]金币 OpenJudge NOI 1.5 45:金币 洛谷 P2669 [NOIP2015 普及组] 金币 [题目考点] ...
- 【2015NOIP普及组】T4:推销员 试题解析
[15NOIP普及组]推销员 时间限制: 1000 ms 内存限制: 131072 KB [题目描述] 阿明是一名推销员,他奉命到螺丝街推销他们公司的产品.螺丝街是一条死胡同,出口与入 ...
- 【2015NOIP普及组】T1:金币 试题解析
[15NOIP普及组]金币 时间限制: 1000 ms 内存限制: 65536 KB [题目描述] 国王将金币作为工资,发放给忠诚的骑士.第一天,骑士收到一枚金币:之后两天(第二天和第 ...
- 近年NOIP普及组复赛题目的简单讲解
NOIP2015普及组复赛 整套题都出得不错,难度适中,层次分明 建议同学们在做题的时候还是先在草稿纸上分析,把关键算法的伪代码写出来,然后设计数据进行静态查错,没有问题后再到电脑上敲出代码.实际效率 ...
- 历年CSP-J(NOIP普及组)分类汇总目录
内容持续更新中... ... [2022CSPJ普及组]T1.乘方 数学问题 [2022CSPJ普及组]T2.解密 数学问题 ...
- NOIP普及组历届真题(1997~2018)
供大家刷题. 先上快捷的查看方式:NOIP普及组历届真题 第二页 来自洛谷--一个很好的刷题网站 剩下是具体题目和难度以及是第几年的题. P1002 过河卒 NOIp普及组 2002 普及- P100 ...
- NOIP普及组历年题目
文章目录 2003 413. 乒乓球 414. 数字游戏 415. 栈 416. 麦森数 2004 417. 不高兴的津津 418. 花生采摘 419. FBI树 420. 火星人 2005 421. ...
- CSP-J (NOIP普及组) 历年复赛真题考察内容(1998~2021)
TZOJ题目分类 本博客原文地址:https://www.cnblogs.com/BobHuang/p/14522022.html 其中,1.较简单题26题左右:2.动态规划17题,其中9题较好做:3 ...
- NOIP2005普及组第4题 循环
NOIP2005普及组第4题 循环 时间限制: 1 Sec 内存限制: 128 MB 提交: 27 解决: 6 [提交][状态][讨论版][命题人:外部导入] 题目描述 乐乐是一个聪明而又勤奋好学 ...
最新文章
- C++ 字符ASC排序
- 我决定开发自己的第一款iPhone应用
- python提取cad坐标到excel_使用python来操作autocad,并且将坐标点转换成cad可见对象...
- 苹果Swift语言入门教程【中文版】
- 使用VScode + PicGo 写markdown 以及github图片加载不出的问题
- java语言入门要多久,王者笔记!
- 搜索系统中的纠错问题
- 编码器正反转识别方法
- 当了两天向导,带他进行了上海都市游885
- 大学实验室面试总结(机器学习)
- yocs_velocity_smoother源码编译
- 【USACO】山峰暸望
- 第四章分支结构程序设计
- Python下载网易云音乐歌单
- 微信是怎么打造平台型生态商业模式的?
- Linux下的按键精灵xdotool
- 日志(Logger)
- C语言中访问结构体成员时 点 . 和 箭头 - 的区别
- terminal 命令行 光标移动 行首 行尾
- Linux权限“suid”与“guid”设置
热门文章
- 简单的快速提取Fbank特征的方法
- 怎么引入oracle驱动包,Maven引入oracle驱动包
- Nextflow patterns
- 计算机专业法语词汇,法语计算机及网络词汇(4)
- 微软通过云存储插件简化Docker容器迁移
- 新版淘客订单API【需token】
- linux进程管理工具:supervisor
- device_register分析
- itextword加公章 java_新手如何使用itext7生成pdf盖章
- 在线Java/C++/C语言/Python/web网页编辑器(IDE)整理