P2672 推销员

下面讲正确的贪心

题解

考虑当推销员要推销 i 家客户时,他可以有两种选择:

(1)选择前 i 家疲劳值 a 最大的客户,加上这些客户里最远的距离

(2)选择前 i-1 家疲劳值 a 最大的客户,然后从后边找一个距离最远的客户

所以贪心思路就出来了

考虑维护什么?

反正怎样都是与疲劳值息息相关,那不如先按照疲劳值从大到小sort一下好了

then

sum[ i ]  前 i 个疲劳值最大的客户,疲劳值之和

x[ i ]  前 i 个疲劳值最大的客户中(也就是sum[ i ]中),距离起点最远的那个客户的距离

hou[ i ]  (sort之后)后 i 个客户中单独推销最大的那个客户的 单推值(=距离*2+疲劳值)

对于每一个 i ,ans就是:

max(sum[ i-1 ]+hou[ i ] , sum[ i ]+q[ i ])

代码

#include<bits/stdc++.h>

using namespace std;

const int maxn=1e5+;
int n;
int sum[maxn],hou[maxn],x[maxn]; struct node
{
int s,a;
}peo[maxn]; bool cmp(node x,node y)
{
return x.a >y.a ;
} int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%d",&peo[i].s );
for(int i=;i<=n;i++)
scanf("%d",&peo[i].a );
sort(peo+,peo+n+,cmp);
for(int i=;i<=n;i++)
{
sum[i]=sum[i-]+peo[i].a ;
x[i]=max(x[i-],peo[i].s* );
}
for(int i=n;i>=;i--)
hou[i]=max(hou[i+],peo[i].s*+peo[i].a ); for(int i=;i<=n;i++)
{
printf("%d\n",max(sum[i-]+hou[i],sum[i]+x[i]));
} return ;
}

后记

带坏萌新

这题数据好水啊,一个错误的贪心井然可以AC

一个nice数据可以卡死这个错误代码

有Bug:测试数据为:5 1 2 4 2 5 5 4 4 3 2

正确输出:12 17 21 25 28

下面这个程序的输出:12 17 21 24 28

代码

#include<bits/stdc++.h>

using namespace std;

const int maxn=1e5+10;
int n,k,rode; long long ans=0; struct node
{
int s,a,dt;
}peo[maxn]; bool cmp(node x,node y)
{
return x.a >y.a ;
} int main()
{
scanf("%d\n",&n);
if(n==1)
{
int x,y;
scanf("%d\n",x*2+y);
return 0;
}
for(int i=1;i<=n;i++)
scanf("%d",&peo[i].s );
for(int i=1;i<=n;i++)
{
scanf("%d",&peo[i].a );
peo[i].dt =peo[i].s *2+peo[i].a ;
if(peo[i].dt>ans)
{
ans=peo[i].dt ;
k=i;
}
}
printf("%ld\n",ans);
rode=peo[k].s;
peo[k].a =-1;
sort(peo+1,peo+n+1,cmp); for(int i=1;i<n;i++)
{
if(peo[i].s <=rode )
{
ans+=peo[i].a ;
printf("%ld\n",ans);
}
else
{
ans+=peo[i].a ;
ans-=rode*2;
ans+=peo[i].s *2;
rode=peo[i].s ;
printf("%ld\n",ans);
}
} return 0;
}

P2672 推销员(已经补锅)的更多相关文章

  1. 洛谷 P2672 推销员 解题报告

    P2672 推销员 题目描述 阿明是一名推销员,他奉命到螺丝街推销他们公司的产品.螺丝街是一条死胡同,出口与入口是同一个,街道的一侧是围墙,另一侧是住户.螺丝街一共有N家住户,第i家住户到入口的距离为 ...

  2. P1364 医院设置 (补锅,memset初始化较大值不可用0x7fffffff )

    P1364 医院设置 题解 弗洛伊德水过 注意初始化一个大数 0x3f 可以,0x5f 好像也可以,但是0x7fffffff 我是真的炸了,初始化为-1 (后面补锅有详细解释) 代码 #include ...

  3. luogu P2672 推销员 |贪心

    题目描述 阿明是一名推销员,他奉命到螺丝街推销他们公司的产品.螺丝街是一条死胡同,出口与入口是同一个,街道的一侧是围墙,另一侧是住户.螺丝街一共有N家住户,第ii家住户到入口的距离为Si米.由于同一栋 ...

  4. 洛谷P2672 推销员 题解 贪心

    题目链接:https://www.luogu.org/problem/P2672 这道题目是贪心,贪心的思想是: 选择 \(m\) 户人家的最大疲劳值应该是以下两种方案中的较大值: 方案一:选择 \( ...

  5. [火星补锅] 水题大战Vol.2 T2 && luogu P3623 [APIO2008]免费道路 题解

    前言: 如果我自己写的话,或许能想出来正解,但是多半会因为整不出正确性而弃掉. 解析: 这题算是对Kruskal的熟练运用吧. 要求一颗生成树.也就是说,最后的边数是确定的. 首先我们容易想到一个策略 ...

  6. P2672 推销员

    贪心,水题 #include <bits/stdc++.h> using namespace std; const int maxn = 1000000; struct house { i ...

  7. 洛谷P2672 推销员

    沙雕贪心...... 我一开始想的是倒着来,每次减去一个. 然后我们就有两个决策:去掉最后一个/去掉前面某一个. 然后第一个决策用并查集维护,第二个决策用线段树即可.仔细想想觉得普及组不会考这种东西, ...

  8. P2672 推销员 优先队列 + 贪心

    ---题面--- 题解: 我会说我想这道普及组题都想了好久么.... 不熟练的普及组选手.jpg 最后随便猜了一个结论居然是对的... 放结论: 假设x = i的最优决策为f[i], 那么f[i + ...

  9. 洛谷 P2672 推销员

    题目传送门 解题思路: 我们会发现本题有一个特性,就是如果我们走到一个更远的地方,那么近的地方距离原点的距离我们可以忽略. 本题要求最大的疲劳值,所以我们需要排序,第一个想到堆,反正我是先想到堆. 然 ...

随机推荐

  1. 享元模式<Flyweight Pattern>

    1.What-是什么?   享元模式是一种轻量级的结构型模式.旨在以共享的方式高效的支持大量的细粒度对象的复用.要求能够共享的对象必须是细粒度对象,这些对象比较相似,状态变化小. 2.Why-为什么? ...

  2. Linux和Windows双系统下Windows系统插入耳机没有声音

    我的笔记本装了Windows7和Debian双系统后,在Windows7下,插入耳机竟然没有声音. 按常规思路分析:首先考虑是耳机问题还是笔记本电脑问题.确定耳机没问题后问题就在笔记本身上了.而问题在 ...

  3. 基于linux与busybox的reboot命令流程分析

    http://www.xuebuyuan.com/736763.html 基于Linux与Busybox的Reboot命令流程分析 ********************************** ...

  4. linux svn 安装

    1.环境centos6.4 2.安装svnyum -y install subversion 3.配置 建立版本库目录mkdir /var/www/svndata svnserve -d -r /va ...

  5. Nginx实用整理

    1. nginx 简述 1.1Nginx是轻量级高并发HTTP服务器和反向代理服务器:同时也是一个IMAP.POP3.SMTP代理服务器:Nginx可以作为一个HTTP服务器进行网站的发布处理,另外N ...

  6. mysql导入redis

    将mysql中数据库指定表导入redis 如何将mysql中某个数据库中的表数据快速导入redis? 以下将演示将本地127.0.0.1中数据库test中的表t_abc导入本地redis中.步骤如下: ...

  7. java将一数组乱序排列

    JAVA的Collections类中shuffle方法模拟了“洗牌”动作可以对list列表进行随机排序.如果一定要自己写,算法也很简单:假设数组array长度为n.用标准随机函数rand(n)生成[0 ...

  8. :last-child的坑-CSS3选择器

    CSS3选择器之:last-child - Eric 真实经历 最近开发项目的时候发现了一个这么多年忽略的问题,和大家分享一下.项目使用的是Antd组件库,有一个搜索框是这样的: 为了保证下拉框的内容 ...

  9. Acwing-282-石子合并(区间DP)

    链接: https://www.acwing.com/problem/content/284/ 题意: 设有N堆石子排成一排,其编号为1,2,3,-,N. 每堆石子有一定的质量,可以用一个整数来描述, ...

  10. vs2017 2019 下载更新慢的解决方法

    国庆期间 下载的速度只有20多kb. 1.去掉网络适配器里面的 ip6勾选. 2.修改电脑的自动dns, 修改为1.1.1.1  , 修改为8.8.8.8  更快. 记得禁用再启用网络: dns为1. ...