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

购物网站 怎么做百度推广下载

购物网站 怎么做,百度推广下载,文章存在 wordpress,网站内搜索关键字目录 大根堆 小根堆 set(小根堆) 大根堆 题目链接:洛谷 P3243 菜肴制作 题目描述 知名美食家小 A 被邀请至 ATM 大酒店,为其品评菜肴。ATM 酒店为小 A 准备了 n 道菜肴,酒店按照为菜肴预估的质量从高到低给予 1 到…

目录

大根堆

小根堆

set(小根堆)


大根堆

题目链接:洛谷 P3243 菜肴制作

题目描述

知名美食家小 A 被邀请至 ATM 大酒店,为其品评菜肴。ATM 酒店为小 A 准备了 n 道菜肴,酒店按照为菜肴预估的质量从高到低给予 1 到 n 的顺序编号,预估质量最高的菜肴编号为 1。

由于菜肴之间口味搭配的问题,某些菜肴必须在另一些菜肴之前制作,具体的,一共有 m 条形如 i 号菜肴必须先于 j 号菜肴制作的限制,我们将这样的限制简写为 (i,j)。

现在,酒店希望能求出一个最优的菜肴的制作顺序,使得小 A 能尽量先吃到质量高的菜肴:

也就是说,

  1. 在满足所有限制的前提下,1 号菜肴尽量优先制作。

  2. 在满足所有限制,1 号菜肴尽量优先制作的前提下,2 号菜肴尽量优先制作。

  3. 在满足所有限制,1 号和 22 号菜肴尽量优先的前提下,3 号菜肴尽量优先制作。

  4. 在满足所有限制,1 号和 2 号和 3 号菜肴尽量优先的前提下,4 号菜肴尽量优先制作。

  5. 以此类推。

例 1:共 4 道菜肴,两条限制 (3,1)、(4,1),那么制作顺序是 3,4,1,2。

例 2:共 5 道菜肴,两条限制 (5,2)、(4,3),那么制作顺序是 1,5,2,4,3。

例 1 里,首先考虑 1,因为有限制 (3,1) 和 (4,1),所以只有制作完 3 和 4 后才能制作 1,而根据 3,3 号又应尽量比 4 号优先,所以当前可确定前三道菜的制作顺序是 3,4,1;接下来考虑 2,确定最终的制作顺序是 3,4,1,2。

例 2 里,首先制作 1 是不违背限制的;接下来考虑 2 时有 (5,2) 的限制,所以接下来先制作 55 再制作 2;接下来考虑 3 时有 (4,3) 的限制,所以接下来先制作 4 再制作 3,从而最终的顺序是 1,5,2,4,3。现在你需要求出这个最优的菜肴制作顺序。无解输出 Impossible!(首字母大写,其余字母小写)

输入格式

第一行是一个正整数 t,表示数据组数。接下来是 t 组数据。对于每组数据:第一行两个用空格分开的正整数 n 和 m,分别表示菜肴数目和制作顺序限制的条目数。接下来 m 行,每行两个正整数 x,y,表示 x 号菜肴必须先于 y 号菜肴制作的限制。

输出格式

输出文件仅包含 t 行,每行 n 个整数,表示最优的菜肴制作顺序,或者 Impossible! 表示无解。

输入输出样例

输入 #1复制

3
5 4
5 4
5 3
4 2
3 2
3 3
1 2
2 3
3 1
5 2
5 2
4 3

输出 #1复制

1 5 3 4 2 
Impossible! 
1 5 2 4 3

说明/提示

【样例解释】

第二组数据同时要求菜肴 1 先于菜肴 2 制作,菜肴 2 先于菜肴 3 制作,菜肴 3 先于。

菜肴 1 制作,而这是无论如何也不可能满足的,从而导致无解。

【数据范围】

100% 的数据满足 n,m≤105,1≤t≤3。

m 条限制中可能存在完全相同的限制。

思想:用大根堆不用小根堆的原因,用小根堆只能找到小点,但是无法保证能先选到1在前面的点,比如4 2,5 1,那么小根堆会优先选择4 2,这样的排列顺序不符合题意,要想1出现在前面,那么可以反向建边,用大根堆,这样的排列顺序就是5 1,最后再翻转输出就可以了。

代码

// Problem: D - 菜肴制作
// Contest: Virtual Judge - 2023暑期训练-图论part1
// URL: https://vjudge.net/contest/574296#problem/D
// Memory Limit: 128 MB
// Time Limit: 1000 ms
// 
// Powered by CP Editor (https://cpeditor.org)#include<bits/stdc++.h>
using namespace std;typedef long long ll;const int N = 2e5+5;int n,m;
int in[N];
vector<int> edge[N];
vector<int> ans;void toposort(){priority_queue<int> q;//q.clear();for(int i=1;i<=n;i++){if(in[i]==0){q.push(i);}}while(!q.empty()){int t=q.top();q.pop();ans.push_back(t);for(int i=0;i<edge[t].size();i++){in[edge[t][i]]--;if(in[edge[t][i]]==0){q.push(edge[t][i]);}}}if(ans.size()<n){cout<<"Impossible!"<<"\n";}else{for(int i=n-1;i>=0;i--){cout<<ans[i]<<' ';}cout<<"\n";}}int main(){int T;cin>>T;while(T--){cin>>n>>m;ans.clear();memset(in,0,N);for(int i=0;i<N;i++){edge[i].clear();}for(int i=1;i<=m;i++){int x,y;cin>>x>>y;edge[y].push_back(x);in[x]++;}toposort();}return 0;	}

题目链接:代码源 最短路

给你一张 n 个顶点 m 条边的有向简单图,顶点编号从 1 到 n,每条边都有一个边权,边权为非负整数。

现在有 k 组询问,每组询问读入两个整数 x,y,请求出从 x 号点到 y 号点的最短路的长度。如果不存在从 x 号点到 y 号点的路径,请输出 -1

输入格式

第一行三个整数 n,m,k,表示图的顶点数、边数和询问次数。

接下来 m 行,每行三个整数 x,y,z,表示 x𝑥 号点到 y 号点有一条边权为 z 的有向边。

接下来 k 行,每行两个整数 x,y,表示一组询问。

输出格式

输出共 k 行,每行一个数表示一组询问的答案。

样例输入

3 3 2
1 2 3
2 3 2
3 2 1
1 3
3 1

样例输出

5
-1

数据规模

对于所有数据,保证 2≤n≤5000,0≤m≤10000,1≤k≤5,1≤x,y≤n,1≤z≤10000。

思想:set是一种数据结构,可以维护数据按照从小到大的顺序排列

小根堆

priority_queue<pii,vector<pii>,greater<pii>> q;

#include<bits/stdc++.h>
using namespace std;typedef long long ll;
typedef pair<int,int> pii;const int N = 2e5+5;struct node{int y,v;  //连接的边以及边权node(int _y,int _v){y=_y;v=_v;}
};vector<node> edge[N+1];
int dist[N+1];
int n,m,k;
priority_queue<pii,vector<pii>,greater<pii>> q;
bool st[N];void dijkstra(int s,int t){memset(dist,127,N+1);memset(st,false,N);dist[s]=0;//q.clear();for(int i=1;i<=n;i++){q.push({dist[i],i});}while(!q.empty()){int x=q.top().second;q.pop();if(st[x]) continue;st[x]=true;for(auto i:edge[x]){if(dist[x]+i.v<dist[i.y]){dist[i.y]=dist[x]+i.v;q.push({dist[i.y],i.y});}}}if(dist[t]<1<<30){cout<<dist[t]<<"\n";}else{cout<<"-1\n";}}int main(){cin>>n>>m>>k;for(int i=1;i<=m;i++){int x,y,z;cin>>x>>y>>z;edge[x].push_back(node(y,z));}for(int i=1;i<=k;i++){int s,t;cin>>s>>t;dijkstra(s,t);}return 0;	}

set(小根堆)
#include<bits/stdc++.h>
using namespace std;typedef long long ll;
typedef pair<int,int> pii;const int N = 2e5+5;struct node{int y,v;  //连接的边以及边权node(int _y,int _v){y=_y;v=_v;}
};vector<node> edge[N+1];
int dist[N+1];
int n,m,k;
set<pii> se;void dijkstra(int s,int t){memset(dist,127,N+1);dist[s]=0;se.clear();for(int i=1;i<=n;i++){se.insert({dist[i],i});}while(!se.empty()){int x=se.begin()->second;if(x==t||dist[x]>1<<30){break;}se.erase(se.begin());for(auto i:edge[x]){if(dist[x]+i.v<dist[i.y]){se.erase({dist[i.y],i.y});dist[i.y]=dist[x]+i.v;se.insert({dist[i.y],i.y});}}}if(dist[t]<1<<30){cout<<dist[t]<<"\n";}else{cout<<"-1\n";}}int main(){cin>>n>>m>>k;for(int i=1;i<=m;i++){int x,y,z;cin>>x>>y>>z;edge[x].push_back(node(y,z));}for(int i=1;i<=k;i++){int s,t;cin>>s>>t;dijkstra(s,t);}return 0;	}

http://www.tj-hxxt.cn/news/32506.html

相关文章:

  • 网站开发需要解决的问题精准营销通俗来说是什么
  • 怎样做外贸网站建设百度提交网址入口
  • 东莞百度代做网站联系方式网站优化方案模板
  • 装潢设计多少钱郴州seo外包
  • 网络规划设计师正高级任职资格新乡seo推广
  • 网站seo啥意思怎么做怎么在百度上发布个人文章
  • 网站设计是不是会要用代码做seo是什么意思 为什么要做seo
  • 建设网站的费用预算培训心得体会模板
  • 专业的企业网站开发公司网络营销与传统营销的整合
  • php网站服务器配置做网络推广的公司
  • 网站开发前台深圳企业网站制作
  • 赤坎手机网站建设公司网站seo置顶 乐云践新专家
  • 企业营销网站建设费用预算如何用模板建站
  • 中国那个公司的网站做的最好看百度自动点击器怎么用
  • 安徽居建标准南宁关键词优化软件
  • .电子商务网站的开发原则包括百度seo是什么意思
  • 推荐系统网站开发无锡网站排名公司
  • 广昌网站建设珠海企业网站建设
  • 常州外贸集团 网站建设张雷明任河南省委常委
  • 赣州有没有做网站的seo积分优化
  • 吸引流量的网站南京百度推广
  • 网站首页适配规则seo怎么搞
  • 外贸购物网站模板东莞seo建站公司
  • 网站建设wbs怎么做好营销推广
  • 有什么wordpress网站优化排名软件网
  • 毕业设计拼车网站的建设雨实现国外搜索引擎优化
  • wordpress如何设水印图片宁波优化网站厂家
  • win7做网站服务器卡搜索引擎营销怎么做
  • 如何做简洁网站设计我的百度账号登录
  • 河北建设厅网站设置bt种子搜索