当前位置: 首页 > news >正文

百度怎样建立网站链接黄冈网站seo

百度怎样建立网站链接,黄冈网站seo,帮人做钓鱼网站,百度云搜索引擎入口百度网盘一、算法内容 1.简介 贪心算法是指在对问题求解时,总是做出在当前看来是最好的选择,而不考虑后续可能造成的影响。也就是说,不从整体最优上加以考虑,只做出在某种意义上的局部最优解。 贪心算法不是对所有问题都能得到整体最优…

一、算法内容

1.简介

贪心算法是指在对问题求解时,总是做出在当前看来是最好的选择,而不考虑后续可能造成的影响。也就是说,不从整体最优上加以考虑,只做出在某种意义上的局部最优解。

贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择,选择的贪心策略必须具备无后效性,即某个状态以前的过程不会影响以后的状态,只与当前状态有关。

在贪心算法的应用当中,往往都会和排序联系起来,所以想要熟练使用贪心算法则必须首先能够熟练地应用排序。而由于贪心算法采取的是局部最优策略,故如果使用贪心算法之前往往需要证明算法的正确性,即证明在此题目/事件中,在每一步采取局部最优策略会得到整体最优的结果。

2.对比与联系

与此算法相对应的是后续我们会学到的动态规划,在动态规划中我们则必须要考虑一个选择对后续的影响。

贪心算法的应用非常广泛,很多其他的算法都需要贪心算法来作为基础。例如:哈夫曼编码、 K r u s k a l Kruskal Kruskal算法、 P r i m Prim Prim算法、 A ∗ A^* A算法等等。所以学好贪心算法是非常重要。

二、实例分析

1.最简单的例子

下面我们将以洛谷上的题目P1208为例,讲解贪心算法的最简单的使用方式。

(1)题目大意

  • 公司需要收购一定量的牛奶
  • 每一个奶农能卖出的牛奶的量和价格都不同
  • 公司希望能以最少的钱买到足够量的牛奶

(2)题目分析

显然按照题目意思,我们只需要将牛奶价格排序好,然后从价格低的开始买,如果此价格的牛奶已经没了,那么才购买价格更高的牛奶,一直买到满足公司收购的量为止即可。

本题目的贪心非常浅显易懂,这里不再给出证明。

(3)正解程序

#include <iostream>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <cstdlib>
#include <cstdio>using namespace std;
typedef long long ll;
const ll maxn=5010;
ll n,m,ans=0;
struct node
{ll per,num;
}farmer[maxn];
bool cmp(node x,node y)
{if(x.per!=y.per)return x.per<y.per;elsereturn x.num>y.num;
}
int main()
{scanf("%lld%lld",&n,&m);for(ll i=1;i<=m;i++)scanf("%lld%lld",&farmer[i].per,&farmer[i].num);sort(farmer+1,farmer+1+m,cmp);ll pos=1;while(n){if(farmer[pos].num!=0){farmer[pos].num--;ans+=farmer[pos].per;n--;}elsepos++;}printf("%lld\n",ans);return 0;
}

2.稍微复杂一点的例子

下面我们将以洛谷上的题目P1094为例,讲解贪心算法的进一步应用,并给出证明的思路。

(1)题目大意

  • 有一组物品需要进行分组,每个物品都有一个价格
  • 希望保证每一组的价格总和小于某一固定值的情况下,使得分组数尽量小
  • 每一组最多包含两个物品

(2)题目分析

  • 首先我们能够想到,要使分组数尽可能小,那么一定是尽量两两组合
  • 所以我们很容易能够想到一个贪心思路,那就是将物品按价格从小到大排序,然后尽量用价格小的和价格大的进行组合。
  • 可以提前说明的是,这个贪心思路是正确的,然而问题并没有完全解决,为什么这样组合之后就能使得最后的分组数最小呢?

(3)贪心证明

  • 根据我们前面所讲到的点,将使用反证法证明

  • 设价格总和上限为 X X X,现有四个物品的价格为 v a , v b , v c , v d v_a,v_b,v_c,v_d va,vb,vc,vd,按从小到大排序

  • v a + v d ≤ X , v b + v c ≤ X v_a+v_d\leq X,v_b+v_c\leq X va+vdX,vb+vcX,此为贪心法得到的分组,最少分为两组。下面改变组合方式,因为 v a + v c ≤ X v_a+v_c\leq X va+vcX显然成立,所以仅考虑另一组的情况。

    • v b + v d ≤ X v_b+v_d\leq X vb+vdX,那么可以分为两组
    • v b + v d ≤ X v_b+v_d\leq X vb+vdX,那么仅能分为一组。因为 v a ≤ v b v_a\leq v_b vavb,所以此处情况完全可能出现。
  • v a + v d > X v_a+v_d> X va+vd>X则无论如何都只能分为一组

  • v a + v d ≤ X , v b + v c > X v_a+v_d\leq X,v_b+v_c> X va+vdX,vb+vc>X。下面考虑 v a + v c , v b + c d v_a+v_c,v_b+c_d va+vc,vb+cd这一种组合方式,显然 v b + v d > X v_b+v_d>X vb+vd>X,所以无论怎么分仍然只有一组。

  • 可以看到,非贪心的情况有可能导致答案数变少。例如 v a = 1 , v b = 5 , v c = 6 , v d = 8 , X = 11 v_a=1,v_b=5,v_c=6,v_d=8,X=11 va=1,vb=5,vc=6,vd=8,X=11

(4)正解程序

#include <iostream>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <cstdlib>
#include <cstdio>using namespace std;
typedef long long ll;
const ll maxn=1000010;
ll num[maxn],ans;
int main()
{ll n,w;scanf("%lld%lld",&w,&n);for(ll i=0;i<n;i++)scanf("%lld",&num[i]);sort(num,num+n);ll z=0,y=n-1;while(z<=y){if(num[z]+num[y]<=w){ans++;z++;y--;}else{y--;ans++;}}printf("%lld\n",ans);return 0;
}

三、作业

1.基础题

P1094 [NOIP2007 普及组] 纪念品分组

P1208 [USACO1.3]混合牛奶 Mixing Milk

P3817 小A的糖果

P5019 [NOIP2018 提高组] 铺设道路

2.提高题

P1056 [NOIP2008 普及组] 排座椅

P1199 [NOIP2010 普及组] 三国游戏

http://www.hkea.cn/news/812594/

相关文章:

  • 企业营销型网站费用短视频推广引流
  • 化妆品可做的团购网站有哪些seo研究中心南宁线下
  • 网站空间域名是什么做电商必备的几个软件
  • 软件公司运营是做什么的seo公司运营
  • 专业云南做网站福州短视频seo服务
  • 网站开发技术期中试题电商培训机构排名
  • 网站设计连接数据库怎么做如何进行百度推广
  • 日本网站图片做淘宝代购网络营销促销方案
  • 网站开发导航栏网站制作的费用
  • 盐城网站设计网站流量统计工具
  • 网站上如何做相关推荐郑州建网站的公司
  • 漂亮大气的装潢室内设计网站模板 单页式html5网页模板包前端优化
  • 论坛网站开发开题报告青岛百度推广多少钱
  • 文山做网站如何优化百度seo排名
  • 上海展陈设计公司有哪些成都网站seo性价比高
  • 小韩网站源码360广告投放平台
  • 网站地图的重要性短信广告投放软件
  • 搭建直播网站需要怎么做教育培训机构平台
  • 濮阳网站网站建设网络营销策划是什么
  • 做新闻网站需要什么手续河北软文搜索引擎推广公司
  • 广州网站建设联系电话seo推广的公司
  • 一起做网店一样的网站关键词歌曲免费听
  • 负责网站建设推广本周热点新闻事件
  • 快速做网站优化谷歌在线浏览入口
  • 苏州企业网站建设开发与制作2023年6月份又封城了
  • 用java做网站可以吗吉林seo刷关键词排名优化
  • 网站建设面试google广告投放技巧
  • 整形网站整站源码如何让关键词排名靠前
  • php网站后台搭建外贸网站大全
  • 建 新闻 网站营销战略有哪些内容