【BZOJ2034】最大收益(贪心)】的更多相关文章

[BZOJ2034][2009国家集训队]最大收益 Description 给出N件单位时间任务,对于第i件任务,如果要完成该任务,需要占用[Si, Ti]间的某个时刻,且完成后会有Vi的收益.求最大收益. N≤5000,1 ≤ Si ≤ Ti ≤ 108,1 ≤ Vi ≤ 108. 澄清:一个时刻只能做一件任务,做一个任务也只需要一个时刻. Input 第一行一个整数N,表示可供选择的任务个数. 接下来的第二到第N+1行,每行三个数,其中第i+1行依次为Si,Ti,Vi Output 输出最大…
这个题真的是太神了... 从一開始枚举到最后n方的转化,各种优化基本都用到了极致.... FQW的题解写了好多,个人感觉我全然没有在这里废话的必要了 直接看这里 各种方法真的是应有尽有 大概说下 首先能够想到一个KM算法求二分图最大代权匹配的问题对吧 左边是任务右边是时间 可是这个是三次方啊 那我们就按价值排序,这样就不用代权匹配了可是还是三方 可是左边在右边的连线是单调的... 所以就能够贪心推断了... #include<iostream> #include<cstring>…
2034: [2009国家集训队]最大收益 题意:\(n \le 5000\)个区间\(l,r\le 10^8\),每个区间可以选一个点得到val[i]的价值,每个点最多选1次,求最大价值 线段树优化建边的做法见上一篇 论文 先把l,r离散化了,因为一个区间只选一个点,所以我们对于每个区间拿出一个点来就行了,方法是按l排序然后每个区间选左边界后的第一个未选点 当然这个点可能超出区间,所以我们要让区间与点匹配得到最大价值 法1:裸上二分图最大权匹配,即使线段树优化建边还是承受不了 法2:这个二分图…
题目描述 给出\(N\)件单位时间任务,对于第\(i\)件任务,如果要完成该任务,需要占用\([S_i, T_i]\)间的某个时刻,且完成后会有\(V_i\)的收益.求最大收益. 澄清:一个时刻只能做一件任务,做一个任务也只需要一个时刻. 输入格式 第一行一个整数\(N\),表示可供选择的任务个数. 接下来的第二到第\(N+1\)行,每行三个数,其中第\(i+1\)行依次为\(S_i,T_i,V_i\). 输出格式 输出最大收益 样例 样例输入1 2 1 1 1 1 1 2 样例输出1 2 样例…
FatMouse prepared M pounds of cat food, ready to trade with the cats guarding the warehouse containing his favorite food, JavaBean. The warehouse has N rooms. The i-th room contains Jii pounds of JavaBeans and requires Fii pounds of cat food. FatMous…
[BZOJ2034]最大收益(贪心) 题面 BZOJ 题解 首先显然让价值越大的占用一个时刻一定更优. 所以把所有东西按照价值排序之后来处理,那么显然就是把前面的全部放好之后,考虑来放当前这个东西,如果能够放下那么就放,否则直接丢掉. 考虑如何检查是否能下放. 首先缩小区间的规模,对于每个位置,找到从他们的左端点开始,往右第一个未被标记的点标记,最后只有被标记的点才可能出现在匹配中. 那么记录每个点的匹配位置,然后从左往右考虑所有可以的匹配位置,如果当前位置没有匹配,则直接匹配. 否则如果当前位…
题目链接 双倍经验:BZOJ.4276.[ONTAK2015]Bajtman i Okrągły Robin(然而是个权限题.区间略有不同) \(Description\) 有\(n\)个任务,完成一个任务需要\(1\)时刻,并会获得\(v_i\)的收益(只获得一次). 每一时刻只能做一个任务,且每个任务只能在\([l_i,r_i]\)的时刻内做.求最大收益. \(n\leq5000,l_i,r_i\leq10^8\). \(Solution\) 我为啥看不懂堆的\(O(n^2\log n)\)…
题目传送门:https://www.luogu.org/problem/show?pid=2647 题目描述 现在你面前有n个物品,编号分别为1,2,3,--,n.你可以在这当中任意选择任意多个物品.其中第i个物品有两个属性Wi和Ri,当你选择了第i个物品后,你就可以获得Wi的收益:但是,你选择该物品以后选择的所有物品的收益都会减少Ri.现在请你求出,该选择哪些物品,并且该以什么样的顺序选取这些物品,才能使得自己获得的收益最大. 注意,收益的减少是会叠加的.比如,你选择了第i个物品,那么你就会获…
http://www.lydsy.com/JudgeOnline/problem.php?id=2034 (题目链接) 题意 n个任务,每个任务只需要一个时刻就可以完成,完成后获得${W_i}$的收益,每个任务可以在${[S_i,T_i]}$间的任一时刻完成,求最大收益. Solution http://wenku.baidu.com/link?url=thnwVQ8xR5-fvJ2oLx1ikuEIZq7_yhaopOlpRAyE7vVztNezw7ltQtvdaEBKhQC47v65hyZX…
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/转载请注明出处,侵权必究,保留最终解释权! Description 给出N件单位时间任务,对于第i件任务,如果要完成该任务,需要占用[Si, Ti]间的某个时刻,且完成后会有Vi的收益.求最大收益. N≤5000,1 ≤ Si ≤ Ti ≤ 108,1 ≤ Vi ≤ 108. 澄清:一个时刻只能做一…
题面 题解 第一眼:线段树优化连边的裸题 刚准备打,突然发现: \(1 \leq S_i \leq T_i \leq 10^8\) 这™用个鬼的线段树啊 经过一番寻找,在网上找到了一篇论文 大家可以去看一下,这里只提示大家用类似匈牙利算法贪心 这里还有代码 代码 #include<cstdio> #include<cstring> #include<cctype> #include<algorithm> #define RG register #define…
买卖股票的最大收益 II 122. Best Time to Buy and Sell Stock II (Easy) 题目描述:   可以进行多次交易,多次交易之间不能交叉进行,可以进行多次交易. 思路分析:   当访问到一个prices[i]且prices[i]-prices[i-1]>0,那么就把prices[i]-prices[i-1]添加到收益中. 代码: public int maxProfit(int []prices){ int profit=0; for(int i=1;i<…
Description 给出\(N\)件单位时间任务,对于第\(i\)件任务,如果要完成该任务,需要占用\([S_i, T_i]\)间的某个时刻,且完成后会有\(V_i\)的收益.求最大收益. 澄清:一个时刻只能做一件任务,做一个任务也只需要一个时刻.\(N≤5000\),\(1 \leq Si \leq Ti \leq 10^8\),\(1 \leq Vi \leq 10^8\). Input 第一行一个整数$N$,表示可供选择的任务个数. 接下来的第二到第$N+1$行,每行三个数,其中第$i…
<span style="color:#330099;">/* K - 贪心 基础 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status Description FatMouse prepared M pounds of cat food, ready to trade with the cats guarding the warehouse contai…
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1052 题目大意: 田忌和齐王各有N匹马,判断怎样比赛,使田忌净胜场数最多. 思路: 一开始贪心出错,把每匹马恰好打败稍微比自己差一点的马,后来发现这个贪心策略是错误的,比如这个例子: 80 76 80 75 如果按照之前的贪心策略,第一次80需要打败75.第二次76对战80,净胜场数为0: 但是正确的策略应该是第一次打平局,第二次胜利,净胜场数为1. 正确思路应该是这样: 1.若田忌最慢的马可以战…
传送门 考虑一个贪心:对于所有人群按照收益从大到小排序,对于每一个人群找到当前能够选择的代价最小的房间成为一组可行订单(如果没有就不可行),最后将这些订单按照收益排序,选其中正的前\(o\)大即可.找代价最小的房间可以使用并查集,因为有偏序关系所以可以直接二分. 考虑其正确性:对于两个人群\(i,j(v_i > v_j)\),在我们的算法中会先给\(i\)分配房间,再给\(j\)分配房间.如果\(i\)分配的房间会影响\(j\)分配房间的选择,那么反过来先选\(j\)再选\(i\)也会导致\(i…
Description 有nn个城市,第ii个城市商品价格为aiai​,从11城市出发依次经过这nn个城市到达n n城市,在每个城市可以把手头商品出售也可以至多买一个商品,问最大收益. Input 第一行一整数T T表示用例组数,每组用例首先输入一整数nn表示城市数量,之后输出nn个整数ai ai​表示每个城市商品单价 (1≤T≤250,1≤n≤105,∑n≤5⋅105) Output 输出最大收益 sol:显然是贪心题:不难证明下面的东西是对的. 如果某天的价格不能卖,那么插入队列一次,表示这…
[CF865D]Buy Low Sell High(贪心) 题面 洛谷 CF 题解 首先有一个\(O(n^2)\)的\(dp\)很显然,设\(f[i][j]\)表示前\(i\)天手中还有\(j\)股股票的最大收益.转移显然. 然而这样子似乎并没有什么优化的余地. 考虑这样子一个贪心,假设我们已经知道了前面\(n-1\)天在最优答案的情况下的购买和卖出情况,只考虑最后这一天,那么你会找到一个可以买入股票的一天,并且其价格最小,然后和这一天的股票价格进行比较,如果更低,你就会在那一天买入股票,在这一…
小 N 是蔬菜仓库的管理员,负责设计蔬菜的销售方案. 在蔬菜仓库中,共存放有 n 种蔬菜,小 N 需要根据不同蔬菜的特性,综合考虑各 方面因素,设计合理的销售方案,以获得最多的收益. 在计算销售蔬菜的收益时,每销售一个单位第 i 种蔬菜,就可以获得 ai 的收益. 特别地,由于政策鼓励商家进行多样化销售,第一次销售第 i 种蔬菜时,还会额外 得到 si 的额外收益. 在经营开始时,第 i 种蔬菜的库存为 ci 个单位. 然而,蔬菜的保鲜时间非常有限,一旦变质就不能进行销售,不过聪明的小 N 已…
https://vjudge.net/problem/CodeForces-867E 题意 一个物品在n天内有n种价格,每天仅能进行买入或卖出或不作为一种操作,可以同时拥有多种物品,问交易后的最大利益. 分析 贪心的取,当然是低买高卖.当买卖的顺序需要斟酌.考虑用小顶堆(优先队列)来维护这过程,我们每次得到一个新的价格,将其和堆顶的价格比较,如果比堆顶的价格低,就直接放入堆中,如果比堆顶的价格高,就意味着我们可以提前以堆顶的价格买入一个物品,然后以当前价格卖出,因此我们可以算出本次收益加到总收益…
原文链接https://www.cnblogs.com/zhouzhendong/p/SRM502-500.html SRM502 Div1 500 好题. 首先,如果已经确定了解决所有问题的优先级,只需要对于每一个问题是否被解决做出决策,那么显然直接 01 背包就好了. 事实上,我们是可以贪心地确定两个问题的优先程度的. 对于两个问题,假设分别为 a 和 b,则先做 a 再紧接着做 b 和先做 b 再紧接着做 a 的收益之差为 \[ \begin{eqnarray*} &&(-dec_a…
目录 经营与开发 @upc_exam_5500 PROBLEM 题目描述 输入 输出 样例输入 样例输出 提示 SOLUTION CODE 经营与开发 @upc_exam_5500 PROBLEM 题目描述 4X概念体系,是指在PC战略游戏中一种相当普及和成熟的系统概念,得名自4个同样以"EX"为开头的英语单词. eXplore(探索) eXpand(拓张与发展) eXploit(经营与开发) eXterminate(征服) --维基百科 今次我们着重考虑exploit部分,并将其模型…
开始刷leetcode算法题 今天做的是“买卖股票的最佳时机” 题目要求 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你可以尽可能地完成更多的交易(多次买卖一支股票). 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票). 看到这个题目 最初的想法是蛮力法 通过两层循环 不断计算不同天之间的利润及利润和 下面上代码 class Solution(object): def maxProfit(self, prices):…
BUPT2017 wintertraining(16) #4 F POJ - 1456 题意 每个商品有过期日期和价格,每天可以卖一个商品,必须在过期前出售才能收益,求最大收益. 题解 贪心,按价格排序,再将它放在过期日期当天出售,若当天已经用了,就往前找可用的日子,若找到了还要标记这一天已用. 代码 #include <cstdio> #include <cstring> #include <algorithm> #include <iostream> u…
正解:贪心 解题报告: 传送门! 这题首先有个很显然的dp,太基础了不说QAQ 然后考虑dp是n2的,显然过不去,所以换一个角度 然后发现这题和普通的dp的题有什么不同呢?就它这儿是一天只能买一支股,所以考虑怎么从这儿下手? 为了方便表示这里先define一下,x表示卖出价格,y表示买入价格 现在考虑如果是只考虑最后一天,那显然是从前面没买股票的日子中找到一天买股票的价格最低的,和最后一天股票的卖出价格做对比,如果能赚钱就卖,就欧克了 但是显然这样只能决定最后一天,因为显然可能存在当前来说今天卖…
月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼.现给定所有种类月饼的库存量.总售价.以及市场的最大需求量,请你计算可以获得的最大收益是多少. 注意:销售时允许取出一部分库存.样例给出的情形是这样的:假如我们有 3 种月饼,其库存量分别为 18.15.10 万吨,总售价分别为 75.72.45 亿元.如果市场的最大需求量只有 20 万吨,那么我们最大收益策略应该是卖出全部 15 万吨第 2 种月饼.以及 5 万吨第 3 种月饼,获得 72 + 45/2 = 94.5(亿元)…
L2-003. 月饼 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼.现给定所有种类月饼的库存量.总售价.以及市场的最大需求量,请你计算可以获得的最大收益是多少. 注意:销售时允许取出一部分库存.样例给出的情形是这样的:假如我们有3种月饼,其库存量分别为18.15.10万吨,总售价分别为75.72.45亿元.如果市场的最大需求量只有20万吨,那么我们最大…
大意: 第i天可以花$a_i$元买入或卖出一股或者什么也不干, 初始没钱, 求i天后最大收益 考虑贪心, 对于第$x$股, 如果$x$之前有比它便宜的, 就在之前的那一天买, 直接将$x$卖掉. 并不需要计算出最优的卖出时间, 因为若$x$后有更优价格, 可以再买回$x$, 不影响贪心结果 #include <iostream> #include <algorithm> #include <math.h> #include <cstdio> #include…
题目大意 一家超市,要卖出N种物品(每种物品各一个),每种物品都有一个卖出截止日期Di(在该日期之前卖出可以获得收益,否则就无法卖出),且每种物品被卖出都有一个收益值Pi. 卖出每个物品需要耗时1天,且任一时刻只能卖出一个物品.给出这N种物品的Di和Pi,求最大收益值. 题目分析 求最优值问题,可以考虑动态规划.贪心.搜索+剪枝等算法.尝试用贪心法来分析. 题目是要卖出物品,每天只能卖出一个,最多只能卖出X个(X为所有物品中最大的deadline值).考虑第D天,需要卖出哪个物品呢? 如果D从1…
思路:维护一个递增队列,如果当天的w比队首大,那么我们给收益增加 w - q.top(),这里的意思可以理解为w对总收益的贡献而不是真正获利的具体数额,这样我们就能求出最大收益.注意一下,如果w对收益有贡献,你会发现w入队了两次,这是因为这里的w可能会有两种可能: 1.当做中间价/最终卖出价 2.买入价 所以我们入队两个w,如果w是买入价,那么其中一个w作为中间价势必弹出,另一个w作为买入价:如果w是最终卖出价,那么两个w会一直待在队列里. 计算总数很简单,用map[i]表示以i为中间价还存在多…