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

电影网站怎么建设兰州 网站建设公司哪家好

电影网站怎么建设,兰州 网站建设公司哪家好,福建漳州网站建设公司,青海网站设计企业1.热浪 信息学奥赛一本通&#xff08;C版&#xff09;在线评测系统 (ssoier.cn)http://ybt.ssoier.cn:8088/problem_show.php?pid1379 很裸的单源最短路问题&#xff0c;n2500,可以用dijksta或者spfa都能过&#xff0c;下面展示spfa的做法 #include<bits/stdc.h> usi…

1.热浪

信息学奥赛一本通(C++版)在线评测系统 (ssoier.cn)icon-default.png?t=N4P3http://ybt.ssoier.cn:8088/problem_show.php?pid=1379

很裸的单源最短路问题,n=2500,可以用dijksta或者spfa都能过,下面展示spfa的做法

#include<bits/stdc++.h>
using namespace std;
const int N=2510,M=6200*2+10;
int h[N],e[M],ne[M],w[M],idx;
int dist[N];
bool st[N];
int S,E;
void add(int a,int b,int c)
{w[idx]=c,e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}
int spfa()
{memset(dist,0x3f,sizeof dist);dist[S]=0;queue<int> q;q.push(S);st[S]=true;while(q.size()){int t=q.front();q.pop();st[t]=false;for(int i=h[t];~i;i=ne[i]){int j=e[i];if(dist[j]>dist[t]+w[i]){dist[j]=dist[t]+w[i];if(!st[j]){q.push(j);st[j]=true;}}}}return dist[E];
}
int main()
{int T,m;cin>>T>>m>>S>>E;memset(h,-1,sizeof h);for(int i=0;i<m;i++){int a,b,c;cin>>a>>b>>c;add(a,b,c),add(b,a,c);}cout<<spfa()<<endl;return 0;
}

 

2.信使

信息学奥赛一本通(C++版)在线评测系统 (ssoier.cn)

由于数据较小可以用Floyd算法求两两之间的最短路,然后后面更新一遍一号点到每一个点的最小距离即可

#include<bits/stdc++.h>
using namespace std;
const int N=110;
int dist[N][N];
int n,m;
int flyd()
{for(int k=1;k<=n;k++)for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)dist[i][j]=min(dist[i][j],dist[i][k]+dist[k][j]);int ans=0;for(int i=2;i<=n;i++) ans=max(dist[1][i],ans);return ans;
}
int main()
{cin>>n>>m;memset(dist,0x3f,sizeof dist);for(int i=0;i<m;i++){int a,b,c;cin>>a>>b>>c;dist[a][b]=dist[b][a]=min(dist[a][b],c);}int t=flyd();if(t==0x3f3f3f3f) puts("-1");else cout<<t<<endl;return 0;
}

3.香甜的黄油

1127. 香甜的黄油 - AcWing题库

枚举每一个农场,然后算一下总距离,然后更新每一个农场的最小值,用spfa求最小距离

#include<bits/stdc++.h>
using namespace std;
const int N=810,M=3000;
int h[N],e[M],ne[M],w[M],idx;
int id[N],dist[N];
int n,p,c;
bool st[N];
void add(int a,int b,int c)
{w[idx]=c,e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}
int spfa(int s)
{memset(dist,0x3f,sizeof dist);memset(st,0,sizeof st);queue<int> q;q.push(s);dist[s]=0;st[s]=true;while(q.size()){int t=q.front();q.pop();st[t]=false;for(int i=h[t];~i;i=ne[i]){int j=e[i];if(dist[j]>dist[t]+w[i]){dist[j]=dist[t]+w[i];if(!st[j]){q.push(j);st[j]=true;}}}}int ans=0;for(int i=1;i<=n;i++){int j=id[i];if(dist[j]==0x3f3f3f3f) return 0x3f3f3f3f;ans+=dist[j];}return ans;
}
int main()
{cin>>n>>p>>c;memset(h,-1,sizeof h);for(int i=1;i<=n;i++) cin>>id[i];for(int i=0;i<c;i++){int a,b,c;cin>>a>>b>>c;add(a,b,c),add(b,a,c);}int ans=0x3f3f3f3f;for(int i=1;i<=p;i++) ans=min(ans,spfa(i));cout<<ans<<endl;return 0;
}

 

4.最小花费

信息学奥赛一本通(C++版)在线评测系统 (ssoier.cn)

算乘法的最短路,也就是把加法改成乘法即可,在求乘的最大值,dist初始化为0就行,用spfa可以过

#include<bits/stdc++.h>
using namespace std;
const int N=2010,M=2e5+10;
int h[N],e[M],ne[M],idx;
double w[M];
double dist[N];
int n,m;
int A,B;
bool st[N];
void add(int a,int b,double c)
{w[idx]=c,e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}
double spfa()
{queue<int> q;q.push(A);dist[A]=1;st[A]=true;while(q.size()){int t=q.front();q.pop();st[t]=false;for(int i=h[t];~i;i=ne[i]){int j=e[i];if(dist[j]<dist[t]*w[i]){dist[j]=dist[t]*w[i];if(!st[j]){q.push(j);st[j]=true;}}}}return dist[B];
}
int main()
{cin>>n>>m;memset(h,-1,sizeof h);for(int i=0;i<m;i++){int a,b;double c;cin>>a>>b>>c;c=(100-c)/100;add(a,b,c),add(b,a,c);}cin>>A>>B;double ans=100.0/spfa();printf("%.8lf",ans);return 0;
}

 

5.最优乘车

920. 最优乘车 - AcWing题库icon-default.png?t=N4P3https://www.acwing.com/problem/content/description/922/

 
  1. #include<bits/stdc++.h>
    using namespace std;
    const int N=510;
    int stop[N];
    int dist[N];
    bool g[N][N];
    int m,n;
    int q[N];
    int bfs()//用bfs求最短路,因为边权只有0 1.0表示不能乘坐的到,1表示能乘坐的到
    {memset(dist,0x3f,sizeof dist);dist[1]=0;q[0]=1;int hh=0,tt=0;while(hh<=tt){int t=q[hh++];for(int i=1;i<=n;i++)if(g[t][i]&&dist[i]>dist[t]+1){dist[i]=dist[t]+1;q[++tt]=i;}}return dist[n];
    }
    int main()
    {cin>>m>>n;string line;getline(cin,line);while(m--){getline(cin,line);stringstream ssin(line);int cnt=0,p;while(ssin>>p) stop[cnt++]=p;//将每个站点都连起来,说明有一条路能够通往for(int i=0;i<cnt;i++)for(int j=i+1;j<cnt;j++)g[stop[i]][stop[j]]=true;}int t=bfs();if(t==0x3f3f3f3f) puts("NO");else cout<<bfs()-1<<endl;return 0;
    }

    6.昂贵的聘礼

    903. 昂贵的聘礼 - AcWing题库

    把0当作虚拟起点,假如是直接买的话就与0连条边,假如可以由其他物品替换的话加换的那个物品连被换的物品一条边

    等级制度就枚举一个区间内的等级制度即可。然后求最小值

  2. #include<bits/stdc++.h>
    using namespace std;
    const int N=110;
    int m,n;
    int w[N][N],level[N];
    bool st[N];
    int dist[N];
    int dijkstra(int down,int up)//一个是最小等级,一个是最大等级
    {memset(dist,0x3f,sizeof dist);memset(st,0,sizeof st);dist[0]=0;for(int i=1;i<=n;i++){int t=-1;for(int j=0;j<=n;j++)if(!st[j]&&(t==-1||dist[j]<dist[t]))t=j;if(st[t]) continue;st[t]=true;for(int j=1;j<=n;j++)if(level[j]>=down&&level[j]<=up)//等级得在这个范围dist[j]=min(dist[j],dist[t]+w[t][j]);}return dist[1];//返回购买第一个物品的最小值
    }
    int main()
    {cin>>m>>n;memset(w,0x3f,sizeof w);for(int i=1;i<=n;i++) w[i][i]=0;for(int i=1;i<=n;i++){int p,cnt;cin>>p>>level[i]>>cnt;w[0][i]=min(w[0][i],p);//从虚拟原点连一条边到物品iwhile(cnt--)//替代物{int id,cost;cin>>id>>cost;w[id][i]=min(w[id][i],cost);//从替代物连一条边到该物品}}int res=0x3f3f3f3f;for(int i=level[1]-m;i<=level[1];i++)//最小枚举level[1]-m,最大枚举level[1],因为要覆盖level[1]且长度为mres=min(res,dijkstra(i,i+m));cout<<res<<endl;return 0;
    }

http://www.15wanjia.com/news/158911.html

相关文章:

  • asp网站连接数据库做网站主要学什么条件
  • 专门做电子书的网站巩义推广网站哪家好
  • 做外贸网站多久更新常州电子商务网站建设
  • 整站网站优化wordpress商城 中文站
  • 网站制作定制18竞价恶意点击报案
  • 中国国际贸易网站桂林两江四湖地图
  • 免费网站个人注册企业网站建设介绍
  • 网站建设科技北京有限公司规划局网站建设工作总结
  • 做网站要用到数据库吗连连建设跨境电商网站
  • 淘宝客网站建站教程沈阳网站建
  • html5微网站demo超轻粘土做动漫网站
  • 网站优化 seo和semui设计自学网站推荐
  • 电商网站建设网黄冈app下载推广平台官网
  • 徐州网站建设大前端旅游产品推广有哪些渠道
  • 又一个wordpress站点wordpress static配置
  • 动漫网站模板设计图柳州网站制作推荐
  • 柳州 网站开发盘锦网站网站建设
  • 安卓和网站开发找工作wordpress侧边栏标题字数
  • 网站开发是什么网站建设一条龙包括哪些服务
  • 福州网站建设个人兼职google推广怎么做
  • 个人商城网站源码网页制作价格私活
  • 农业电商网站建设pp找关键词的网站
  • 网站索引量成都小型软件开发公司
  • 多站点wordpress安装网站建设技术需求
  • 专业俄文网站建设网站关键词排名优化
  • 模板免费网站建设淘宝网站开发的意义
  • 天津网站推广外包科技网站设计公司有哪些
  • 国外包装设计网站大全校园网站建设的感受论文
  • 曲靖网站建设电话老薛主机wordpress设置
  • 企业网站建设ppt介绍360可以做网站