随笔分类 -  贪心法

摘要:注意:本题解仅供参考学习,请勿直接抄袭代码,否则造成的后果和笔者无关。 第一题: 题意: 对n个数升序排序。 题解: 快排,不解释。 代码(省略了输入输出函数,下同): 1 val n = getInt (); 2 val l = getIntTable (n); 3 fun qsort [] = 阅读全文
posted @ 2019-11-11 11:49 YuanZiming 阅读(1509) 评论(0) 推荐(0)
摘要:bzoj1745[Usaco2005 oct]Flying Right 飞行航班 题意: n个农场,有k群牛要从一个农场到另一个农场(每群由一只或几只奶牛组成)飞机白天从农场1到农场n,晚上从农场n到农场1,上面有c个座位,问最多可以满足多少只牛的要求。n≤10000,k≤50000,c≤100。 阅读全文
posted @ 2016-11-16 06:49 YuanZiming 阅读(552) 评论(0) 推荐(0)
摘要:bzoj4716假摔 题意: 给出一个矩阵,求这个矩阵中权值和第k小的长在xmin到n之间,宽在ymin到m之间的子矩阵。n,m≤1000,k≤250000。 题解: 首先求出长为xmin,宽为ymin的子矩阵放入优先队列,每次取出时如果该矩阵之前没有出现过(用set判重),则将其扩展并放入优先队列 阅读全文
posted @ 2016-11-11 19:43 YuanZiming 阅读(224) 评论(0) 推荐(0)
摘要:bzoj1596[Usaco2008 Jan]电话网络 题意: 在一棵树中选最少的点建塔,使得每个点都有塔或相邻点有塔。n≤10000。 题解: 贪心。dfs时对于每个当前点,在dfs完它的所有子节点后如果它以及它的儿子以及它的父亲没塔,则在它父亲处建塔。 代码: 20161108 阅读全文
posted @ 2016-11-11 19:10 YuanZiming 阅读(279) 评论(0) 推荐(0)
摘要:bzoj1528[POI2005]sam-Toy Cars bzoj1826[JSOI2010]缓存交换 题意: Jasio有n个不同的玩具,它们都被放在了很高的架子上,地板上不会有超过k个玩具。当Jasio想玩地板上的其他玩具时,他会自己去拿,如果他想玩的玩具在架子上,他的妈妈则会帮他去拿,当她拿 阅读全文
posted @ 2016-11-11 18:54 YuanZiming 阅读(305) 评论(0) 推荐(0)
摘要:bzoj1124[POI2008]枪战Maf 题意: 有n个人,每个人手里有一把手枪。一开始所有人都选定一个人瞄准(有可能瞄准自己)。然后他们按某个顺序开枪,且任意时刻只有一个人开枪。因此,对于不同的开枪顺序,最后死的人也不同。求最小死人数和最大死人数。n≤1000000。 题解: 最小死人数:先找 阅读全文
posted @ 2016-11-07 14:16 YuanZiming 阅读(237) 评论(0) 推荐(0)
摘要:bzoj2590[Usaco2012 Feb]Cow Coupons 题意: 市场上有N头奶牛,第i头奶牛价格为Pi。FJ有K张优惠券,使用优惠券购买第i头奶牛时价格会降为Ci,每头奶牛只能使用一次优惠券。FJ想知道花不超过M的钱最多可以买多少奶牛。n≤50000,m≤10^14。 题解: 先按ci 阅读全文
posted @ 2016-11-04 21:46 YuanZiming 阅读(523) 评论(0) 推荐(0)
摘要:bzoj1747[Usaco2005 open]Expedition 探险 题意: n个加油站,每个坐标为x,可加油量为ai。一辆车初始油量为l,从起点到终点,每走一个单位就掉一个单位的油,问最少加油次数。n≤10000,坐标≤1000000。 题解: 先假设永远不加油,之后每走一段路之前如果油不够 阅读全文
posted @ 2016-10-30 15:45 YuanZiming 阅读(248) 评论(0) 推荐(0)
摘要:bzoj3062[Usaco2013 Feb]Taxi 题意: Bessie在农场上为其他奶牛提供出租车服务,她必须赶到这些奶牛的起始位置,并把他们带到它们的目的地。Bessie的车很小,所以她只能一次只能搭载一头奶牛。N只奶牛的起始位置和结束为止都是已知的,请确定Bessie从0点出发完成任务再到 阅读全文
posted @ 2016-10-30 15:26 YuanZiming 阅读(500) 评论(0) 推荐(0)
摘要:bzoj1774[Usaco2009 Dec]Toll 过路费 题意: n点m边,从点a到b的费用为边权和加a到b经过点的点权最大值,给出q个询问问从a到b的最小费用。n≤200。 题解: 用先对点权排序,接下来用floyd算每两个点的最短路和最小费用,因为点权已经单调了,所以求路径的点权最大值之间 阅读全文
posted @ 2016-10-20 14:24 YuanZiming 阅读(183) 评论(0) 推荐(0)
摘要:bzoj1753[Usaco2005 qua]Who's in the Middle 题意: 输入N个数,输出升序排列后中间那个数。n≤10000。 题解: 本来想交个python的结果莫名奇妙RE了~ 代码: 20160926 阅读全文
posted @ 2016-09-26 21:32 YuanZiming 阅读(245) 评论(0) 推荐(0)
摘要:bzoj1707[Usaco2007 Nov]tanning分配防晒霜 题意: n头牛,第i头适应spf值在ai到bi之间的防晒霜。m种防晒霜,每种spf值为ci,有di瓶,问最多多少奶牛能得到合适的防晒霜。n,m≤2500。 题解: 贪心,把牛按上限从小到大排序,然后对于每只奶牛,应该选它可以用的 阅读全文
posted @ 2016-09-26 21:30 YuanZiming 阅读(195) 评论(0) 推荐(0)
摘要:bzoj1691[Usaco2007 Dec]挑剔的美食家 题意: m种牧草,每种都有一个价钱和鲜度,n头奶牛,每头都有一个牧草价钱下限和牧草鲜度上限,要求从每头奶牛从m种牧草中选取一种符合要求的牧草,使得总价钱最小,两头奶牛选的种类不能相同。n,m≤100000。 题解: 贪心。先将所有牧草按鲜度 阅读全文
posted @ 2016-09-25 15:49 YuanZiming 阅读(307) 评论(0) 推荐(0)
摘要:bzoj3709[PA2014]Bohater 题意: n只怪物,打死第i只要耗ai血,打死后补bi血。如果你血≤0就会死。你现在有z血,问怎样的顺序可以打死所有怪。n≤100000。 题解: 先打bi大于ai的怪攒血,此时按ai升序排序。因为先杀耗血少的再杀耗血多的,则为下一步提供了更高的可能性。 阅读全文
posted @ 2016-09-20 21:25 YuanZiming 阅读(400) 评论(0) 推荐(0)
摘要:bzoj1572[Usaco2009 Open]工作安排Job 题意: n个工作,每个需要的时间都为1,最晚完成时间为ti,价值为vi,问最多能得到的价值。n≤100000。 题解: 先把所有工作按最晚开始时间排序,然后把能做的工作先做掉(如果前面的工作时间有空隙可以填上),处理剩下的工作时,比较之 阅读全文
posted @ 2016-09-18 20:33 YuanZiming 阅读(424) 评论(0) 推荐(0)
摘要:bzoj1724[Usaco2006 Nov]Fence Repair 切割木板 题意: FJ需要n块木板,第i块木板长度为ai。但他只有一块长度为sigma(i,1,n)ai的木板。每切一次的代价为所切割木板的长度,问最小代价。n≤20000 题解: 等价于合并石子(把单块木板的长度看作石子)。故 阅读全文
posted @ 2016-09-18 20:14 YuanZiming 阅读(270) 评论(0) 推荐(0)
摘要:bzoj3375[Usaco2004 Mar]Paranoid Cows 发疯的奶牛 题意: 依次给出n只奶牛的产奶时间段,求最大的k使得前k只奶牛不存在一个时间段被另一个时间段完全覆盖的情况。n≤100000。 题解: 设当前在处理第i只奶牛,前i-1只奶牛都合法。那么如果前i-1只奶牛中时间段左 阅读全文
posted @ 2016-09-16 15:03 YuanZiming 阅读(329) 评论(0) 推荐(0)
摘要:bzoj3893[Usaco2014 Dec]Cow Jog 题意: 在一条无限长的跑道上有N头牛,每头牛有自己的初始位置及奔跑的速度。牛之间不能互相穿透。当一只牛追上另一只牛时,它不得不慢下来,成为一个群体。求T分钟后一共有几个群体。n≤100000,t≤1000000000 题解: 如果慢车经过 阅读全文
posted @ 2016-09-16 12:10 YuanZiming 阅读(587) 评论(0) 推荐(0)
摘要:bzoj4396[Usaco2015 dec]High Card Wins 题意: 一共有2n张牌,Alice有n张,Bob有n张,每一局点数大的赢。知道Bob的出牌顺序,求Alice最多能赢几局。n≤50000。 题解: 贪心。将Alice和Bob的牌按点数大小排序,然后如果Alice当前牌能赢B 阅读全文
posted @ 2016-09-16 10:54 YuanZiming 阅读(275) 评论(0) 推荐(0)
摘要:bzoj2288【POJ Challenge】生日礼物 题意: 给一个序列,求不超过m个连续的部分,使元素和最大。序列大小≤100000 题解: 先把连续的正数和负数合并起来,接着如果正数个数小于m则全选,否则需要确定去掉那个正数或合并哪个正数。初始ans设为所有正数和,将所有的数按绝对值大小放入堆 阅读全文
posted @ 2016-09-11 14:36 YuanZiming 阅读(162) 评论(0) 推荐(0)