贪心算法(2天)

概念

贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解,但对范围相当广泛的许多问题他能产生整体最优解或者是整体最优解的近似解。

贪心法的一般流程:

Greedy(C)  //C是问题的输入集合即候选集合
{
    S={ };  //初始解集合为空集
    while (not solution(S))  //集合S没有构成问题的一个解
    {
       x=select(C);    //在候选集合C中做贪心选择
       if feasible(S, x)  //判断集合S中加入x后的解是否可行
          S=S+{x};
          C=C-{x};
    }
   return S;

最优装载问题:给 N 个物体,第 i 个物体的重量为 Wi ,尽量选择多的物体,使得总重量不超过C。
部分背包问题:有 N 个物体,第 i 个物体的重量为 Wi ,价值为 Vi ,在总重量不超过 C 的情况下让总价值尽量高,每一个物体可以只取走一部分,价值和重量按比例计算。
乘船问题:有 N 个人,第 i 个人的重量为Wi ,每艘船的载重量均为C最多可乘两个人。求最少得用多少条船才能装下所有的人

题目

计蒜客:
T1233 书架
基本思路:排序+判断
T1238 乘积最大的拆分
基本思路:从2开始拆,直到不能拆,然后把剩余的数从后往前依次加1。
T1258 最小新整数
思路:18599 16599 可以看到这两个数 最大的都是9,但去掉9后却不是最小的,而去掉8,6后都是最小的,所以可以发现:小大小大大,去掉那个标大的数就行。
T1445 组队
思路:排序+比较 要注意i=i+2(简单题)
T1654 数列分段
思路:判断题,注意点(最后长度大于0的话,也要总数加1)
T1524 外币兑换
入门题思路:就是找最大值,不要自作多情四舍五入
T1811 奥利凡德
T1思路:也是简单的排序,比较大小。
T1429 压缩歌曲
思路:计算差值+排序+判断
T1439 车厢重组
思路:排序+统计(简单题)
T1716 [USACO Mar09]沙堡
思路:排序+计算(简单题)
T1730 排队接水
思路:排序+计算等待时间(排序注意点:按时间和序号。等待时间注意点:后面的等待时间要加上前面的接水时间)
T1846 采购奖品
思路:排序+计算
T1483 数组的稳定性
思路:排序+计算
T1511 当总统
思路:排序+计算
新知识:while(scanf("%d",&n),n)括号里的语句其实就是个逗号表达式,它的返回值是n的值,所以这个语句就相当于while(n),n=0时跳出循环,写成这样是为了输入。 如果是while(scanf("%d%d",&n,&m,),n,m),那么就相当于while(m)
T1718 [USACO 1.4.1]混合牛奶
思路:排序+计算

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ღ江晚吟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值