贪心算法
Sentry-X
山东大学计算机学院
展开
-
2021-03-23 深度搜索和子集枚举问题的思想
摘要:子集枚举问题中每一个元素往往只有两种状态,如有或者无,左脑处理还是右脑处理等等,总之只有两种选择。可以利用dfs进行递归的枚举搜索。问题描述:传送门:2392考前临时抱佛脚 算法分析:由于每一个题在处理时,要么由左脑负责,要么由右脑负责,因此是一个典型的2n2^n2n型枚举问题。可以用dfs实现当然在dfs时也可以加入适当的剪枝操作代码:#include <iostream>#include <bits/stdc++.h>using namespa原创 2021-03-23 11:21:20 · 102 阅读 · 0 评论 -
2021-03-08 贪心算法——求最佳位置
摘要:在数轴上求一个点的,使该点到其他所有店的欧氏距离最短问题链接:最佳位置结论推导:根据基本不等式可知:答案一定是这n个点的中心位置,即n个点坐标的平均值。推导如下:a2+b2>=(a+b)22a^2+b^2 >=\frac{(a+b)^2}{2}a2+b2>=2(a+b)2当且仅当a==ba==ba==b时等号成立。因此对于方程(a−a0)2+(b−b0)2>=(a−a0+b−b0)22=(a+b−a0−b0)22(a-a_0)^2+(b-b_0)^原创 2021-03-11 15:28:16 · 762 阅读 · 0 评论 -
2021-03-04贪心算法——换啤酒问题(关于能不能赊账)
摘要:三种喝啤酒的问法问题简述:1. 有多少钱喝多少啤酒,多买多送,但是瓶盖不能兑换2. 给定有几瓶酒,喝完后瓶盖可以兑换,但是不赊账3. 给定有几瓶酒,喝完后瓶盖可以兑换,但是赊账 算法分析:问题1:简单无脑的分配钱即可,尽量一次性多买,然后多送问题二:利用公式递推一共喝的啤酒数=非空啤酒数量+兑换的数量一共喝的啤酒数=非空啤酒数量+兑换的数量一共喝的啤酒数=非空啤酒数量+兑换的数量又因为瓶盖可以兑换出满瓶的啤酒,满瓶的啤酒又可以提供一个瓶盖,因此二者相互关联。直到没有满瓶的原创 2021-03-04 20:48:08 · 536 阅读 · 1 评论