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

遵义制作网站免费网络营销方式

遵义制作网站,免费网络营销方式,四川城乡建设网站首页,可以做心理测试的网站有哪些我写了好多注释&#xff0c;一看就能看懂&#xff0c;这个题目我想了6&#xff0c;7个小时&#xff0c;一开始忽略了船的位置和要把船安置的位置一致的情况&#xff0c;补上就对了。 #include <iostream> using namespace std; int inf 0x3f3f3f3f, num[1007], dp[1007…

我写了好多注释,一看就能看懂,这个题目我想了6,7个小时,一开始忽略了船的位置和要把船安置的位置一致的情况,补上就对了。

#include <iostream>
using namespace std;
int inf = 0x3f3f3f3f, num[1007], dp[1007][207], L[207][207], S[207][207], N, M, R;
void init()
{for (int i = 1; i <= N; i++){for (int j = 1; j <= N; j++){L[i][j] = inf;S[i][j] = inf;}L[i][i] = 0;S[i][i] = 0;}
}
void input()
{int from, to, cost;char op;for (int i = 1; i <= M; i++){scanf("%d %d %d %c\n", &from, &to, &cost, &op);if (op == 'S'){if (cost < S[from][to]){S[from][to] = cost;}if (cost < S[to][from]){S[to][from] = cost;}}else if (op == 'L'){if (cost < L[from][to]){L[from][to] = cost;}if (cost < L[to][from]){L[to][from] = cost;}}}scanf("%d", &R);for (int i = 1; i <= R; i++){scanf("%d", &num[i]);}
}
void floyd()
{for (int k = 1; k <= N; k++){for (int i = 1; i <= N; i++){for (int j = 1; j <= N; j++){if (L[i][k] != inf && L[k][j] != inf){if (L[i][k] + L[k][j] < L[i][j]){L[i][j] = L[i][k] + L[k][j];}}if (S[i][k] != inf && S[k][j] != inf){if (S[i][k] + S[k][j] < S[i][j]){S[i][j] = S[i][k] + S[k][j];}}}}}
}
void handleNormalLine(int i, int j)
{// dp[i][j]是从num[1]到达num[i],并且到达num[i]时船在j的最小路径,当i大于1时,dp[i][j]一定与num[i-2]走到num[i-1]时停船的位置有关// 我们需要从num[i-1]走陆路到k,然后走水路到j,把船停在j,之后走陆路从j到num[i]dp[i][j] = inf;for (int k = 1; k <= N; k++){if (k != j){// 从num[i-1]到k的陆路不通,从k到j的水路不通,从j到num[i]的陆路不通,从1到num[i-1]并且停船到k实现不了,那么这种情况不用计算if (L[num[i - 1]][k] == inf || S[k][j] == inf || L[j][num[i]] == inf || dp[i - 1][k] == inf){continue;}if (L[num[i - 1]][k] + S[k][j] + L[j][num[i]] + dp[i - 1][k] < dp[i][j]){dp[i][j] = L[num[i - 1]][k] + S[k][j] + L[j][num[i]] + dp[i - 1][k];}}else{// k和j相等时,就不需要走陆路到k,然后再走水路到j了,直接从num[i-1]走陆路到num[i]即可,因为j==k船已经在j了,不用管船if (L[num[i - 1]][num[i]] == inf || dp[i - 1][k] == inf){continue;}if (L[num[i - 1]][num[i]] + dp[i - 1][k] < dp[i][j]){dp[i][j] = L[num[i - 1]][num[i]] + dp[i - 1][k];}}}
}
void handleFirstLine(int i, int j)
{// i=1时,船就在num[i],dp[i][j] i=1 代表开船到j,船放在j,然后陆路走回来num[i]// 走水路开船从num[i]到j,然后船停在j,之后从j走陆路回到num[i],如果num[i]到j的水路,或者j到num[i]的陆路不通,那么这个都无法实现if (S[num[i]][j] == inf || L[j][num[i]] == inf){dp[i][j] = inf;return;}dp[i][j] = S[num[i]][j] + L[j][num[i]];
}
void doDp()
{// 我们用dp[i][j] 代表邮递员从 num[1]按照顺序一个个走到num[i],即达到邮递员在num[i]且船的位置在j的状态下,最小的消耗for (int i = 1; i <= R; i++){for (int j = 1; j <= N; j++){if (i == 1){handleFirstLine(i, j);}else{handleNormalLine(i, j);}}}
}
int findAns()
{int ans = inf;for (int i = 1; i <= N; i++){if (dp[R][i] < ans){ans = dp[R][i];}}return ans;
}
int main()
{while (true){scanf("%d%d", &N, &M);if (N == 0 && M == 0){break;}init();input();floyd();doDp();printf("%d\n", findAns());}return 0;
}

http://www.hrbkazy.com/news/48869.html

相关文章:

  • 便宜的做网站公司免费产品推广软件
  • 网络架构师主要做什么郑州seo顾问外包公司
  • 网站备案 公司注销吗人民日报今日新闻
  • 滕州做网站企业网站建设流程
  • 如何建立网站或网页沈阳今天刚刚发生的新闻
  • 网页显示站点不安全杭州网站搜索排名
  • 网站建设注册密码咋弄青岛seo建站
  • wordpress 主查询seo有哪些优缺点?
  • 哈尔滨如何做网站推广优化2022最近十大的新闻热点
  • 北京 企业网站开发今日头条新闻最新事件
  • asp动态网站衣服销售微信软文范例100字
  • 爱媛直播seo短视频入口引流
  • 公司网站需要程序员做吗海口seo计费
  • 全球最受欢迎的网站免费二级域名查询网站
  • 上海建设单位工程备案网站百度推广和优化有什么区别
  • 济南营销型网站建设公司营销型网站建设优化建站
  • 齐河做网站百度怎么提交收录
  • 深圳做手机网站多少钱百度今日数据
  • 十大不封号直播平台企业网站seo多少钱
  • wordpress $limit移动端seo关键词优化
  • 企业做网站要注意些什么问题上海网络推广渠道
  • 济宁网站开发招聘域名信息查询网站
  • 专门做淘宝收藏可以赚钱的网站公众号如何推广运营
  • 合肥网站建设找佳达长春网站制作公司
  • 易思企业网站管理系统免费软文发布平台
  • 网站系统荥阳网站优化公司
  • 哪个网站做h5好网络网站推广优化
  • 中山移动网站建设报价bt搜索引擎下载
  • 网站建设最重要的因素seo优化运营
  • 个人怎么做网站宁波seo优化报价多少