luogu P2672 推销员 |贪心】的更多相关文章

题目描述 阿明是一名推销员,他奉命到螺丝街推销他们公司的产品.螺丝街是一条死胡同,出口与入口是同一个,街道的一侧是围墙,另一侧是住户.螺丝街一共有N家住户,第ii家住户到入口的距离为Si米.由于同一栋房子里可以有多家住户,所以可能有多家住户与入口的距离相等.阿明会从入口进入,依次向螺丝街的X家住户推销产品,然后再原路走出去. 阿明每走1米就会积累1点疲劳值,向第i家住户推销产品会积累Ai点疲劳值.阿明是工作狂,他想知道,对于不同的X,在不走多余的路的前提下,他最多可以积累多少点疲劳值. 输入格式…
P2672 推销员 题目描述 阿明是一名推销员,他奉命到螺丝街推销他们公司的产品.螺丝街是一条死胡同,出口与入口是同一个,街道的一侧是围墙,另一侧是住户.螺丝街一共有N家住户,第i家住户到入口的距离为\(S_i\)米.由于同一栋房子里可以有多家住户,所以可能有多家住户与入口的距离相等.阿明会从入口进入,依次向螺丝街的\(X\)家住户推销产品,然后再原路走出去. 阿明每走1米就会积累1点疲劳值,向第\(i\)家住户推销产品会积累\(A_i\)点疲劳值.阿明是工作狂,他想知道,对于不同的\(X\),…
P2672 推销员 下面讲正确的贪心 题解 考虑当推销员要推销 i 家客户时,他可以有两种选择: (1)选择前 i 家疲劳值 a 最大的客户,加上这些客户里最远的距离 (2)选择前 i-1 家疲劳值 a 最大的客户,然后从后边找一个距离最远的客户 所以贪心思路就出来了 考虑维护什么? 反正怎样都是与疲劳值息息相关,那不如先按照疲劳值从大到小sort一下好了 then sum[ i ]  前 i 个疲劳值最大的客户,疲劳值之和 x[ i ]  前 i 个疲劳值最大的客户中(也就是sum[ i ]中…
题目链接:https://www.luogu.org/problem/P2672 这道题目是贪心,贪心的思想是: 选择 \(m\) 户人家的最大疲劳值应该是以下两种方案中的较大值: 方案一:选择 \(a[i]\) 最大的 \(m\) 户人家: 方案二:选择 \(a[i]\) 最大的 \(m-1\) 户人家,以及剩下的 \(n-(m-1)\) 户人家中 \(2 \times s[i] + a[i]\) 最大的那户人家 所以,我们可以给 \(n\) 户人家按照 \(a[i]\) 从大到小金星排序.…
---题面--- 题解: 我会说我想这道普及组题都想了好久么.... 不熟练的普及组选手.jpg 最后随便猜了一个结论居然是对的... 放结论: 假设x = i的最优决策为f[i], 那么f[i + 1]一定包括f[i]. 也就是说f[i+1]一定可以由f[i]推出来. 所以f[i]一定是由f[i+1]中选定的所有点中去掉一个得来的. 即下一次选择一定是基于上一次选择的... 至于证明嘛...感性理解吧. 因为选哪户人家推销其实相互没太多联系.而且选i个推销肯定选满是最划得来的.... 大概是这…
传送门 解题思路 第一种: 对于选i家,很显然,a值前i-1家的一定会选,所以只需要考虑最后一家的选法.要么是选择a值第i大的(就不管s了),要么选择剩下的中s最大的. 我们把每一家的情况(s和a)存入几个结构体中,按照a的值从大到小排序,再用sum求出a的前缀和,用maxs[i]表示前i家中最大的s,用maxa[i]表示在i...n家中选一家的最大价值,即(s*2+a)的最大值. 然后对于要求的每一个i,ans[i]就是 选a值最大的前i家 选a值最大的前i-1家加上剩下的i...n家中贡献最…
NOIP 2015 推销员 题意: 有一个喜欢疲劳的推销员,告诉你在一个单口胡同(数轴)中的n户家庭的位置,和向他们推销可以获得的疲劳度.分别输出向(1,2,3,4...n)户人家推销可以得到的最大疲劳值.对了,这个推销员走一格,疲劳度也会加一. 思路: 贪心,首先按每户人家的推销疲劳度从大到小排序,考虑选定一组,走路带来的疲劳度是定的,就是最远那个*2. 所以对于每个答案= max(sum[ i ]  + mx * 2 , sum [i - 1] + h[i] ).其中sum是排序后对推销疲劳…
贪心,水题 #include <bits/stdc++.h> using namespace std; const int maxn = 1000000; struct house { int s; int a; int value; }hs[maxn]; bool operator < (house a, house b) { return a.value<b.value; } int main() { int n; cin >> n; for(int i = 1;…
沙雕贪心...... 我一开始想的是倒着来,每次减去一个. 然后我们就有两个决策:去掉最后一个/去掉前面某一个. 然后第一个决策用并查集维护,第二个决策用线段树即可.仔细想想觉得普及组不会考这种东西,慌得一批. 然后又发现可能有问题:你可能取x个的时候不从x + 1转移过来,而是x + 2 然后就不会了. 然后看提解发现正解是顺着来......什么沙雕. 结论:若取x个的时候最优解是集合S,那么取x+1个时的最优解集合一定包含S.(说明了上面我的做法是对的) 证: 即证对于每一个取x+1的方案p…
前几天在学堆,这个数据结构貌似挺简单的,但是我看了很久啊QAQ... 今天算是搞懂了吧...于是想到了这道题...(当初悄悄咪咪看题解记得一点) 点我看题 放洛谷的题... 题意的话,大概就是有n个房子在一条直线上,每个房子有一个离起点的距离,还有一个价值. 然后n个询问,第 i 个表示选 i 个房子能得到的最大总价值.总价值指 最远距离*2+每一个推销房子的价值. 有一个前提,不多走路,也就是说这个最远距离必须是某个要推销的房子. 思路:我萌可以考虑一下贪心,对于第i个询问,是否可以从第 i-…