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

网站建设怎么wordpress采集微信公众文章

网站建设怎么,wordpress采集微信公众文章,网站空间支持什么程序,wordpress谷歌地图插件怎么用第五十二章 BFS进阶#xff08;二#xff09;——双向广搜一、双向广搜1、优越之处2、实现逻辑3、复杂度分析二、例题1、问题2、分析3、代码一、双向广搜 1、优越之处 双向广搜是指我们从终点和起点同时开始搜索#xff0c;当二者到达同一个中间状态的时候#xff0c;即相… 第五十二章 BFS进阶二——双向广搜一、双向广搜1、优越之处2、实现逻辑3、复杂度分析二、例题1、问题2、分析3、代码一、双向广搜 1、优越之处 双向广搜是指我们从终点和起点同时开始搜索当二者到达同一个中间状态的时候即相遇。 那么这么搜有什么好处呢 我们知道在很多题目中我们使用BFS的时间复杂度是指数级别的。 也就是说如果讲BFS的进行次数画成一个函数的话就会画成下面这个图。 如果我们采取从两端出发到中间某点相遇的做法。 那么示意图可以画成下面的样子 可能原来我们需要进行A次搜索但是双向广搜的话我们就只需要进行B次搜索。上图仅仅表示一个大概意思目的仅仅为了突出双向广搜进行了很大的优化请勿追究细节 除了上面这种大致的表示方法外我们还可以画成一个搜索树的形式来看。 红色绿色线交叉的部分组成的菱形是双向广搜过程中所需搜索的状态数量。 上面的两个图仅仅是感性的分析了一下双向广搜的优越之处。 我们还需要量化计算一下到底优化了多少具体的时间复杂度是多少在分析复杂度之前我们需要先看一下双向广搜大体的实现逻辑。 2、实现逻辑 我们创建两个队列。 一个队列从起点开始广搜一个队列从终点开始广搜。 而在BFS中我们的执行次数和队列中的元素是相关的。我们队列中的元素越多BFS需要扩展的就越多。所以我们可以通过队列中的元素个数来代表一个BFS扩展时的复杂程度。 因此我们可以比较两个BFS的队列中的元素谁队列中元素少就对哪个BFS进行拓展。 3、复杂度分析 根据上面的算法实现我们可以知道基本上就是从终点开始的BFS和从起点开始的BFS轮流进行。 我们可以认为二者进行的次数是一样的。 假设二者一共扩展了KKK次那么各自可以认为进行了k/2k/2k/2次。 这里的拓展是只刚才搜索树中的层。假设每次扩展是多两个状态入队那么总共的状态就是12122....2k/2−11 2^1 2^2 ....2^{k/2-1}12122....2k/2−1求和以后约等于2k/22^{k/2}2k/2那么两个BFS加起来就是2k/212^{k/21}2k/21。 如果单向广搜的话按照刚才的求和公式对kkk层的状态求和大概是2k2^{k}2k 那么我们就发现优化了大约2k/22^{k/2}2k/2倍。 二、例题 1、问题 2、分析 过程很简单就是从起点开始枚举每一个可能的变化直到最后变成了B。 由于我们已经知道了终点过程所以可以同时从B到A开始变化。一直到二者中间状态重合。 3、代码 #includebits/stdc.h using namespace std; typedef long long ll; const int N 6; int n; string A, B; string a[N], b[N]; int extend(queuestring q, unordered_mapstring, int da,unordered_mapstring, intdb,string a[N], string b[N]) {int d da[q.front()];while(q.size() da[q.front()] d){auto t q.front();q.pop();for(int i 0; i n; i ){for(int j 0; j t.size(); j ){if(t.substr(j, a[i].size()) a[i]){string r t.substr(0, j) b[i] t.substr(j a[i].size());if(db.count(r))return da[t] db[r] 1;if(da.count(r))continue;da[r] da[t] 1;q.push(r);}}}}return 11; } int bfs() {if(A B)return 0;queuestringqa, qb;unordered_mapstring, int da, db;qa.push(A), qb.push(B);da[A] db[B] 0;int step 0;while(qa.size() qb.size()){int t;if(qa.size() qb.size()){t extend(qa, da, db, a, b);}else{t extend(qb, db, da, b, a);}if(t 10)return t;if(step 10)return -1;}return -1; }void solve() {cin A B;while(cin a[n] b[n])n ;int t bfs();if(t -1)cout NO ANSWER!\n;else cout t \n; } int main() {ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);solve(); }
http://www.hkea.cn/news/14445097/

相关文章:

  • 专门做定制化的网站企业网站软件下载
  • 响应式网站公司移动互联网开发技术有哪些
  • 东莞网站建设员wordpress播放纯音乐
  • 门户网站建设的特点设计网络网站建设
  • 凡科自助建站平台杭seo网站建设排名
  • 景德镇陶瓷学院校友做网站的上海设计公司排名前十强20
  • 不良网站举报中心官网龙岩关键词优化排名
  • 广东企业网站建设策划安卓上搭建wordpress
  • 大良营销型网站设计公司一分钟做网站
  • 潘家园做网站的公司网站外链建设的策略分析
  • 国外建站程序有没有淄博张店做兼职工作的网站
  • 做网站的怎样找客户做电商网站要服务器吗
  • 深圳东风大厦 网站建设.网站链接策略
  • 网站导航页怎么做怎样才能制作网站
  • 青海制作网站优化大师 win10下载
  • 青岛网站建设迅优域名不变修改网站怎么做
  • 襄阳市建设局网站百度电脑版网页
  • 属于网络营销特点的是北京seo排名服务
  • wordpress设置网站导航建造师人才网交流平台
  • 网站制作的英文建设一个网站花多少钱
  • 山东省建设工程 评估中心网站用discuz建设企业网站
  • 空投糖果网站开发网站发展阶段怎么做
  • 祥云网站建设网站建设 python
  • 企业vi设计公司旅游公司logo百度推广优化技巧
  • 网站维护模式ipv6网站如何做
  • 汕头网站开发定制网页设计与制作考试试题及答案
  • 那个旅游网站可以做行程国内h5网站欣赏
  • 网站代码优化所有标签wordpress是干嘛的
  • 分栏型网站wordpress购物模板
  • 购物网站支付功能怎么做注册个免费网站