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

买房百度优化是什么

买房,百度优化是什么,毕业设计(论文)-基于cms的校园网站建设,网站pc和手机端分离怎么做一、题目大意 我们有n个点,p条边,最小化从1到n之间的路径的第k1大的数(当路径不超过k时就是0) 二、解题思路 我们首先用dijkstra过一遍,判断从1能不能到n,不能直接输出-1结束。 1能到达n的话&#xff0…

一、题目大意

我们有n个点,p条边,最小化从1到n之间的路径的第k+1大的数(当路径不超过k时就是0)

二、解题思路

我们首先用dijkstra过一遍,判断从1能不能到n,不能直接输出-1结束。

1能到达n的话,就对二分第k+1大的边进行二分,left选-1,right选最大的边的长度+1(这里我left一开始选取的时最小边-1,后来发现当k比较大时结果可能是0)

二分的依据如下

设二分的值为mid
记录从1到n的路径中必走的大于mid的值的数量
如果超过了k,那么放大mid
如果小于等于k,那么缩小mid,同时记录这样不断循环,直到找到一个临界值limit
当mid=limit时,大于mid的边小于等于k个
当mid=limit-1时,大于mid的边超过k个
那么limit一定就是第k+1大的边输出最后一个(大于mid的边数小于等于k的)mid即可

三、代码

#include <iostream>
#include <algorithm>
#include <queue>
#include <vector>
using namespace std;
typedef pair<int, int> P;
vector<P> edges[1007];
bool used[1007];
int n, p, k, d[1007], inf = 0x3f3f3f3f, maxt = 0;
void input()
{int from, to, cost;scanf("%d%d%d", &n, &p, &k);for (int i = 0; i < p; i++){scanf("%d%d%d", &from, &to, &cost);edges[from - 1].push_back(P(cost, to - 1));edges[to - 1].push_back(P(cost, from - 1));maxt = max(cost, maxt);}
}
bool judgeByDijkstra(int mid)
{for (int i = 0; i < n; i++){d[i] = inf;used[i] = false;}d[0] = 0;priority_queue<P, vector<P>, greater<P>> que;que.push(P(d[0], 0));while (!que.empty()){P current = que.top();que.pop();if (used[current.second] || current.first > d[current.second]){continue;}used[current.second] = true;for (int i = 0; i < edges[current.second].size(); i++){P toEdge = edges[current.second][i];int relativeEdge = toEdge.first > mid ? 1 : 0;if (d[current.second] + relativeEdge < d[toEdge.second]){d[toEdge.second] = d[current.second] + relativeEdge;que.push(P(d[toEdge.second], toEdge.second));}}}return d[n - 1] <= k;
}
void binarySearch()
{int left = -1, right = maxt + 1;while (left + 1 < right){int mid = (left + right) / 2;if (judgeByDijkstra(mid)){right = mid;}else{left = mid;}}printf("%d\n", right);
}
bool judgeIfCanGet()
{for (int i = 0; i < n; i++){d[i] = inf;used[i] = false;}d[0] = 0;priority_queue<P, vector<P>, greater<P>> que;que.push(P(d[0], 0));while (!que.empty()){P current = que.top();que.pop();if (used[current.second] || current.first > d[current.second]){continue;}used[current.second] = true;for (int i = 0; i < edges[current.second].size(); i++){P toEdge = edges[current.second][i];if (d[current.second] + toEdge.first < d[toEdge.second]){d[toEdge.second] = d[current.second] + toEdge.first;que.push(P(d[toEdge.second], toEdge.second));}}}return d[n - 1] != inf;
}
int main()
{input();if (!judgeIfCanGet()){printf("-1\n");}else{binarySearch();}return 0;
}

http://www.mmbaike.com/news/26709.html

相关文章:

  • 网站的开发工具seo推广代运营
  • 做婚恋网站的翻译好吗论述搜索引擎优化的具体措施
  • 网站备案域名更改吗产品软文模板
  • 做网站赚外快自己开网店怎么运营
  • 做爰网站宝鸡seo优化
  • 湖北网站建设优化网上推广平台
  • 互联网是做什么工作的广州谷歌seo
  • 镇江网页湖南seo优化报价
  • 网站做商丘网络推广外包
  • 网站换空间步骤深圳网络提速优化服务包
  • 做网站的哪家比较好最新的网络营销方式
  • qq在线客服系统seo快速提升排名
  • 政府网站谁做的站长之家素材
  • 找人做网站被骗了属于诈骗吗百度指数的各项功能
  • 网站建设一般步骤天津seo排名
  • 浪潮网站 ibm网站 哪家公司做的百度推广退款电话
  • 宝安石岩网站建设百度关键词搜索排名查询
  • 2_试列出网站开发建设的步骤杭州网站优化培训
  • java做网站好吗seo入门视频
  • 药品网站前置审批做网站找哪个公司好
  • 建设手机网站哪个平台比较好seo关键词怎么优化
  • 武汉seo网站排名百度商家入驻
  • 做网站要有策划么怎么做百度推广
  • 商城网站建设怎么样百度竞价排名系统
  • 企业专业网站建设哪家好无货源电商怎么做
  • 自己做网站自己做推广教程视频教程河北seo公司
  • 商丘网站建设价格百度竞价被点击软件盯上
  • 怎么自己做刷qq网站软文营销经典案例200字
  • 怎么样用自己电脑做网站百度竞价推广专员
  • 什么是响应式营销型网站建设快手seo关键词优化