题目:洛谷P2672、codevs5126、Vijos P1977

题目大意:有个推销员要去推销,要你求他推销1~n户人家分别最多花多少“疲劳值”。具体见题目。

解题思路:如果用$O(n^2)$做的话,可以得到60分。如何得到满分呢?

贪心,先选择$s[i]*2+a[i]$值最大的一个点,并将这个点记为now,用堆保存now左边的点的疲劳值。每次选择点时,取出左边疲劳值最大的点,枚举now右边的点j,找出右边疲劳值最大的点(这里要加上2*(now到j的距离)),两个比较,取大值。如果左边的大,则直接弹出堆,否则将now更新,把old_now+1~new_now-1之间的点的$a[i]$扔进堆里即可。时间复杂度,最好情况下是$O(n log n)$,最坏情况下是$O(n^2)$,数据比较平均,所以能得满分。

此题我在取出堆元素时没有判断是否为空,然而在上面的OJ中提交都没有出错,说明最坏情况并没有出现在数据中。

C++ Code:

#include<cstdio>
#include<ext/pb_ds/priority_queue.hpp>
__gnu_pbds::priority_queue<int>ld;
int n;
int a[100005],s[100005];
int main(){scanf("%d",&n);int mxi=0,mx=0;for(int i=1;i<=n;++i)scanf("%d",&s[i]);for(int i=1;i<=n;++i)scanf("%d",&a[i]);for(int i=1;i<=n;++i)if(s[i]*2+a[i]>mx){mx=s[i]*2+a[i];mxi=i;}printf("%d\n",mx);for(int i=1;i<mxi;++i)ld.push(a[i]);int now=mxi;for(int i=2;i<=n;++i){int lmax=0,rmax=0,ri=0;if(!ld.empty())lmax=ld.top();for(int j=now+1;j<=n;++j)if(s[j]*2-s[now]*2+a[j]>rmax){rmax=s[j]*2-s[now]*2+a[j];ri=j;}if(lmax>rmax){mx+=lmax;ld.pop();}else{mx+=rmax;for(int j=now+1;j<ri;++j)ld.push(a[j]);now=ri;}printf("%d\n",mx);}return 0;
}

转载于:https://www.cnblogs.com/Mrsrz/p/7240158.html

[NOIP2015普及组]推销员相关推荐

  1. NOIP2015普及组第1题 45 金币 方法三(python3实现)

    OpenJudge - 45:金币 信息学奥赛一本通(C++版)在线评测系统 [NOIP2015 普及组] 金币 - 洛谷 n=int( input() )x=1 #x为每天收到的金币数sum=0t= ...

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

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

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

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

  4. ◆竞赛题目◆◇NOIP2015普及组◇求和

    ◇NOIP2015普及组◇求和 Description 一条狭长的纸带被均匀划分出了n个格子,格子编号从1到n.每个格子上都染了一种颜色color_i用[1,m]当中的一个整数表示),并且写了一个数字 ...

  5. noip2015普及组真题详解

    第二十一届全国青少年信息学奥林匹克联赛初赛 普及组 C++ 语言试题 竞赛时间: 2015 年 10 月 11 日 14:30-16:30 一.单项选择题 ( 共 20 题,每题 1.5 分,共计 3 ...

  6. NOIP2015普及组复赛 解题分析

    1.金币 算法分析 直接模拟. #include <iostream> #include <cstdio> #include <cstring> using nam ...

  7. P2671 [NOIP2015 普及组] 求和(前缀和)

    文章目录 1.描述: 2. 输入: 3.输出: 4.样例输入: 5.样例输出: 6.题目大意: 7.思路 80分思路: 80分代码 O( n*n ) 100分思路:O( n ) 一百分代码 8.反思 ...

  8. Noip2015普及组第四题 Salesman的解题报告

    [题意分析] 咋一看,这一题可以用贪心做,但是,时间复杂度是O(n*n),只能过60%的数据. [贪心算法](超时,60分) #include<cstdio> #include<cs ...

  9. 扫雷游戏(NOIP2015 普及组第二题)

    描述 扫雷游戏是一款十分经典的单击小游戏. 在n行m列的雷区中有一些格子含有地雷(称之为地雷格),其他格子不含地雷(称之为非地雷格). 玩家翻开一个非地雷格时,该格将会出现一个数字--提示周围格子中有 ...

  10. 金币(NOIP2015 普及组第一题)

    描述 国王将金币作为工资,发放给忠诚的骑士. 第一天骑士收到一枚金币:之后两天(第二天和第三天),每天收到两枚金币:之后三天(第四.五.六天),每天收到三枚金币:之后四天,每天收到四枚金币,以此类推: ...

最新文章

  1. 在Ubuntu 14.04 64bit上搭建单机本地节点Spark 1.3.0环境
  2. GEO,以GSM2309041这套数据为例,找到需要的sra数据,SRX2159543
  3. Nature封面:每天工作21.5小时的AI化学家,8天内完成688个实验,已自主发现一种全新催化剂...
  4. 《博客园精华集》Sharepoint+MOSS分册第2轮筛选结果文章列表
  5. Fedora 34 Beta发布:引入GNOME 40巨大桌面升级
  6. Springboot使用JPA框架对数据库实现增删改查(附详细代码)
  7. 使用Apache Spark让MySQL查询速度提升10倍以上
  8. vue的移动app项目中,自定义拖拽指令的问题
  9. tomcat优化配置
  10. 使用rsync搭建自用的开源镜像站
  11. 亚马逊再开3000+无人店!国内却一半是海水一半是火焰
  12. CHB-MIT波士顿儿童医院癫痫EEG脑电数据处理(二)
  13. Docker run 容器处于created状态问题
  14. 毕业生档案、户籍、三方协议等问答
  15. 计算机视觉 马尔_计算机视觉概述
  16. linux mysql命令
  17. HTML/CSS中文本text属性详解
  18. 谷歌浏览器开多个小号窗口
  19. 简单的Android端新闻App的实现
  20. 写一段c程序,把“rsrp:-107,rsrq:-6,rssi:-81,sinr:11”数字提取出来

热门文章

  1. 【爬虫】堆糖图片爬取
  2. BLUES吉他学习笔记007 bluesrv[11]
  3. 以太坊编程入门实战-熊健-专题视频课程
  4. Boot Device简介
  5. 口布杯花的60种叠法_餐巾折花艺术3餐巾折杯花.ppt
  6. C语言刷题训练营-第一讲
  7. 招商银行笔试题之解码方法
  8. GGS-DDU(最小树形图)
  9. 国际贸易的价格表示方法贸易术语
  10. RFID技术实现汽车零部件与EDI自动连接