贪心
贪心思想
Mr.琛
钻石要琢磨
展开
-
洛谷P5019 铺设道路(贪心/分治)
这道题一看到的思路是分治:每次找到最低点,每个坑相应地填最低点的高度,然后divide为最低点左右两部分按此思路继续divide,直到 l>r 时结束。分治的做法按提供的样例可以过,但是分治的时间复杂度在[nlogn, n^2]之间,n最大为1e5规模,如果卡了 n2 的样例会TLE。分治代码:#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const .原创 2020-09-03 15:05:15 · 405 阅读 · 0 评论 -
HDU 2899--Strange fuction(模拟退火)
题意: 给定y,求给定那串多项式函数(0<=x<=100)的最值。思路: 求函数最值采用模拟退火算法。模拟退火(Simulate Anneal,SA)是一种概率+贪心算法,借鉴了热力学的金属退火,用到统计学中,即物体降温时,当温度较高时状态有较大概率朝着温度低的方向移动,温度低下来时,概率逐渐减小。用到算法中,即每次若随机到一个更优的点则选择之,每次随机到一个较差的点,则以一定概...原创 2020-01-28 16:28:14 · 185 阅读 · 0 评论 -
HDU3348--coins(贪心+思维)
题意: 你有面值为1,5,10,50,100的钱币分别若干张;求购买某一价值的物品所花的最少和最多钱币数。思路:(1)最少的钱币数: 由于面值分别为1,5,10,50,100;大面值都可以由小面值凑数转化而来,故贪心策略适用,从大面值开始枚举,每次取当前能取的最大面值。(2)最多的钱币数: 此时采用贪心策略不再成立了,因为若从小面值开始枚举,当前的最优解并不一定是全局的最优解了。(i.e. ...原创 2020-01-24 17:02:35 · 458 阅读 · 0 评论 -
POJ3614 Sunscreen (贪心+优先队列)
POJ 3614,求最多满足情况的牛的数量。贪心:将牛的最小值从小到大排,防晒值也从小到大排,在最小值小于防晒值的牛中,优先选择最大值小的,因为这样其他最大值大的有更多选择空间,对于最大值的比较用优先队列实现。代码如下:(含注解)#include<cstdio>#include<cstring>#include<algorithm>#include...原创 2019-07-31 19:26:09 · 186 阅读 · 0 评论 -
2019牛客暑期多校--C (Governing sand)(贪心+枚举)
题意:有n种树,每种树给出高度,价格和数量,求砍掉一些树使得最高的树占所有树的1/2以上(即最高的树的数量大于比它矮的树的数量)的最小花费。思路:枚举+贪心,从高度从小到大去枚举每种树使其作为最高的树的所需花费,然后取最小值。#include <cstdio>#include <cstring>#include <algorithm>using nam...原创 2019-08-09 14:07:41 · 102 阅读 · 0 评论 -
HDU6438--Buy and Resell(2018ccpc网络赛)贪心+优先队列
题意:每到一个位置可以买一个东西或卖一个东西或什么也不做;问最大利润及最大利润情况下使用的最短时间;思路:贪心,用一个优先队列结构去存之前准备买的东西(但还没买),遇到比堆中最小值大的值时,就把堆顶元素pop掉(这里开始才算完成交易),同时把当前值入队两次,为什么是两次?由于当前值的选择不一定是最优的选择,后面可能有更好的选择,故第一次是用来作为中间位置存入以便进行进一步更大利润的交易。第二...原创 2019-08-19 19:59:50 · 152 阅读 · 0 评论 -
poj1456--Supermarket(贪心+并查集优化时间复杂度)
题意:每天可以买一件东西,每件东西有价值和最后购买的期限,问能获得的最大价值。思路:贪心,肯定先选价值大的,同时最好是在最后期限的时候买,为其他物品留选择空间。第一个是用了并查集优化的,第二个是纯贪心,可以看出时间快了不只1倍。法一:纯贪心,复杂度n*n,数据大一点时可能过不了,按价值排序,直接开一个时间标记数组看是否该天还可以用,这样从价值大到小枚举保证每天买的都是最大价值。#incl...原创 2019-08-21 13:35:03 · 223 阅读 · 0 评论 -
洛谷P1080--国王游戏(数学+贪心+大数: python / java)
题意:思路:任取队列中的两个相邻位置来推,假设位置为 i 和 i+1,设位置前面已经积累的左手金币数量为X,对于位置i,ans1=max(X/bi, Xai/ b(i+1))(设max内为y1,y2),交换两位置:ans2=max(X / b(i+1),Xa(i+1)/bi)(设max内为y3,y4),显然,y3<=y2,y1<=y4; 要使ans1<ans2(即前面一种排法...原创 2019-09-09 21:44:41 · 513 阅读 · 0 评论