题目描述

  阿明是一名推销员,他奉命到螺丝街推销他们公司的产品。螺丝街是一条死胡同,出口与入口是同一个,街道的一侧是围墙,另一侧是住户。螺丝街一共有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 2 4 5

5 4 3 4 1

输出样例

12 17 21 24 27

 

数据规模

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

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

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

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

代码

#include<stdio.h>long MAX(long a,long b)
{return a>b?a:b;
}int main()
{long N;scanf("%ld",&N);long a[2][N];//存输入的两行数据long flag,flag0;//存数组下标,前者存上次取最大值的数所对应的下标,后者存这次取最大值的数所对应的下标long max0,max;long i,k,X,j,m;long record;//记录每次的疲劳度long distance;//存每次最远的距离 for(i=0;i<2*N;i++){if(i<N)   scanf("%ld",&a[0][i]);else if(i<2*N) scanf("%ld",&a[1][i-N]);}//读入数据 max=0;for(k=0;k<N;k++){max=max>(2*a[0][k]+a[1][k])?max:(2*a[0][k]+a[1][k]);if (max==2*a[0][k]+a[1][k]){flag=k;}}printf("%ld\n",max);//x=1时 record=a[1][flag];a[1][flag]=0;for(X=2;X<=N;X++)//x>=2时 {max0=0;m=flag;distance=a[0][flag];for(j=0;j<N;j++){m=flag;if(a[0][j]<a[0][flag])//考虑距离小于原来最大距离的数集 {max0=max0>(a[1][j]+max)?max0:(a[1][j]+max);if(max0==(a[1][j]+max)) flag0=j;}if(a[0][j]>a[0][flag])//考虑距离大于原来最大距离的数集{max0=max0>(2*a[0][j]+a[1][j]+record)?max0:(2*a[0][j]+a[1][j]+record);if(max0==(2*a[0][j]+a[1][j]+record)) {flag0=j;distance=a[0][j];}}}max=max0;record=max-2*distance;//记录疲劳度 printf("%ld\n",max);a[1][flag0]=0;   //对取的数的疲劳度清零 }return 0;
}

ps:oj上超时了,希望大佬们指点一二

推销员基础解法c++相关推荐

  1. <力扣(LeetCode)>141、环形链表(链表基础解法)java

    141. 环形链表 给你一个链表的头节点 head ,判断链表中是否有环. 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环. 为了表示给定链表中的环,评测系统内部使用整 ...

  2. 1 2 5组合100,有多少种方法

    问题描述:用随意多个1 2 5三个数字的组合,使其值为100,有多少种组合方法? 基础解法:穷举法,1穷举100次,2穷举50次,5穷举20次,这种方法总共穷举的次数为100*50*20=100 00 ...

  3. 平面直角坐标系中的旋转公式_初一下学期,平面直角坐标系中求图形面积,转化与化归思想的体现...

    在平面直角坐标系中求三角形的面积,是比较重要的知识点,体现了数形结合的思想.转化与化归的思想.在平面直角坐标系中,求图形面积的方法较多,除了利用图形的面积公式外,还可能会将一个图形的面积转化为多个图形 ...

  4. JavaScript 实现:输出斐波那契数列

    问渠那得清如许,为有源头活水来. 想要保持自己的技术活力,最有效的手段就是通过不断地输入来提供足够的养分.我们也不必刻意追求高深的或者新鲜的知识点,通过对一个基础问题的全方位多维度解析,同样也会收获不 ...

  5. 2-SAT问题,一个神奇的东西

    文章目录 参考资料与前话 sat问题简介 解法 例题 解法以及一点点证明 基本的转换思路 基本的构图 基础解法1 证明1 代码1 基础解法2 基础证明2 代码2 小结 参考资料与前话 luogu题解 ...

  6. 关于第一型曲面积分的再思考

    关于第一型曲面积分的再思考 @(微积分) 有些问题,看着复杂,却很好解.同样,有些问题看着很简单,但是却很难下手.举一个关于第一型曲面积分计算的例子. 第一型曲面积分基础解法要干三件事: 投影 代入 ...

  7. 面试中的SQL分析二

    1,面试题范例一 1.用一条SQL语句 查询出每门课都大于80分的学生姓名 name kecheng fenshu 张三 语文 81 张三 数学 75 李四 语文 76 李四 数学 90 王五 语文 ...

  8. 隐私泄露下的数据暗网,分类标签中的爱恨一生

    自打人类进化中出现了商业的那一刻起,营销,就成为了人类钻研的核心. 交易的本质是价值交换,但世界上不存在永远对等的价值,所以交换中存在套利空间,这些套利空间,成就了商业的价值. 逐利是人的本性,这是刻 ...

  9. c++/go算法模板, 刷题记录

    ◉ 一.数组 912. 排序数组 给你一个整数数组 nums,请你将该数组升序排列. 示例 1: 输入:nums = [5,2,3,1] 输出:[1,2,3,5] 示例 2: 输入:nums = [5 ...

  10. 算法学习 (门徒计划)3-2 哈希表与布隆过滤器及经典问题 学习笔记

    算法学习 (门徒计划)3-2 哈希表与布隆过滤器及经典问题 学习笔记 前言 哈希表 哈希操作 冲突处理 开放定址法 再哈希法 公共溢出区 链式地址法 扩容哈希表 设计简易哈希表 总结 布隆过滤器 对比 ...

最新文章

  1. 给算法工程师和研究员的「霸王餐」| 附招聘信息
  2. beamer插入图片_beamer中暗背景插入图片
  3. Python A+B问题
  4. 阿里巴巴矢量图标库iconfont的使用
  5. 大小端模式,stm32采用小端模式
  6. 单模光纤和多模光纤的区别_多模光纤和单模光纤的区别与应用
  7. Python设置常量不可修改的办法
  8. 【Windows 命令行】CMD 在资源管理器中打开当前路径
  9. \pset 、\x命令
  10. 设计师交流社区,在集设原创作品通过交流发现问题,不断进步!
  11. 因为CSS文件编码问题IE6无法正确解析CSS
  12. Linux DNS服务详解——DNS基础知识
  13. Android 存储学习之在内部存储中读写文件
  14. Java编写飞机大战(超级详细的完整版)--附源码及图片
  15. 艾默生Ev3100变频器源码,汇编语言的。电梯变频器
  16. python办公自动化——提取pdf中的文字和表格
  17. AI美杜莎来袭 · 光点2021
  18. 专利代理人的真实工作状况
  19. 秋天视频批量生成GIF V1.32
  20. pytorch创建新环境

热门文章

  1. 现今最强引擎对比!虚幻3 vs CE2 vs 寒霜2.0
  2. 深圳市集体户户口簿首页pdf版获取指南
  3. Unity Input键盘输入无反应
  4. 冒险岛左右移动攻击,定时加血加蓝加BUFF JAVA实现
  5. python接入支付宝 40004 invalid-signature 错误原因: 验签出错
  6. dnf超时空漩涡副本路线流程图_dnf怎么打超时空漩涡 dnf超时空漩涡打法攻略
  7. jsp网页在线编辑器
  8. java encode_java的web开发中URLEncoder.encode方法
  9. 基于区块链的融合通信初探(一)
  10. UVA11210 Chinese Mahjong