ccf 201712-4 行车路线

解题思路:

  首先Dijkstra是基于贪心算法的,即每一次作出的选择都具有贪心选择性。此题由于有“如果连续走小道,小明的疲劳值会快速增加,连续走s公里小明会增加s2的疲劳度。”这种情况,所以不能使用Dijkstra算法。

  这里使用Bellman-Ford算法

70分备份待修改:

 #include<iostream>
#include<cstring>
using namespace std;
int n,m;//n为路口的数量,m为道路的数量
const int maxn = + ;
const int maxm = + ;
const int INF = ;//无穷大
struct node{
int ci,cj;
int type;
int cij;
}path[*maxm]; int Edge[maxn][maxn];//记录两个点之间路径的编号
int dist[maxn];//记录源点1到每一个节点的最短路
int pro[maxn];//记录每一个节点的前驱结点 void bellman()
{
memset(dist,INF,sizeof(dist));
dist[] = ;
memset(pro,-,sizeof(pro));
pro[] = ;//1没有前驱
for(int k=;k<n;k++)///进行n-1次松弛操作
{
bool flag = false;
for(int i=;i<*m;i++)
{
if(path[i].type == )//大道
{
if(dist[path[i].cj] > dist[path[i].ci]+path[i].cij)
{
dist[path[i].cj] = dist[path[i].ci]+path[i].cij;
pro[path[i].cj] = path[i].ci;
flag = true;
}
} else{//小道
//首先要计算出连续走小路多长时间
int con = path[i].cij;
int temp = i;
if(pro[path[i].ci] != - && pro[path[i].ci] != )//已经加入,有前驱
{ int pathnum = Edge[pro[path[temp].ci]][path[temp].ci];
while( path[pathnum].type == )//连续走小道
{
con += path[pathnum].cij;
temp = Edge[pro[path[temp].ci]][path[temp].ci];
if(pro[path[pathnum].ci] == ) break;//到达起始结点
pathnum = Edge[pro[path[temp].ci]][path[temp].ci];
} }
if(dist[path[i].cj]>dist[path[temp].ci] + con*con)
{
dist[path[i].cj]=dist[path[temp].ci] + con*con;
pro[path[i].cj] = path[i].ci;
flag = true;
}
}
}
if(!flag) break;
}
} int main()
{ while(cin>>n>>m)
{
for(int i=;i<*m;i++)
{
cin>>path[i].type>>path[i].ci>>path[i].cj>>path[i].cij;
i++;
path[i].ci = path[i-].cj;path[i].cj = path[i-].ci;
path[i].cij = path[i-].cij;path[i].type = path[i-].type;
Edge[path[i].ci][path[i].cj] = i;
Edge[path[i].cj][path[i].ci] = i-;
} bellman();
cout<<dist[n]<<endl;
}
return ;
}

ccf 201712-4 行车路线(70分)的更多相关文章

  1. ccf 201712-4 行车路线(Python实现)

    一.原题 问题描述 试题编号: 201712-4 试题名称: 行车路线 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 小明和小芳出去乡村玩,小明负责开车,小芳来导航. 小芳将 ...

  2. 洛谷P4559 [JSOI2018]列队 【70分二分 + 主席树】

    题目链接 洛谷P4559 题解 只会做\(70\)分的\(O(nlog^2n)\) 如果本来就在区间内的人是不用动的,区间右边的人往区间最右的那些空位跑,区间左边的人往区间最左的那些空位跑 找到这些空 ...

  3. 「PKUSC2018」星际穿越 (70分做法)

    5371: [Pkusc2018]星际穿越 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 27  Solved: 11[Submit][Status] ...

  4. 洛谷P1979 华容道(70分 暴力)

    P1979 华容道 题目描述 [问题描述] 小 B 最近迷上了华容道,可是他总是要花很长的时间才能完成一次.于是,他想到用编程来完成华容道:给定一种局面, 华容道是否根本就无法完成,如果能完成, 最少 ...

  5. 洛谷P1081 开车旅行70分

    https://www.luogu.org/problem/show?pid=1081 太遗憾了明明写出来了,却把最小值初始值弄小了,从第二个点开始就不可能对了.70分! #include<io ...

  6. 华容道 noip2013 70分搜索

    题目描述 [问题描述] 小 B 最近迷上了华容道,可是他总是要花很长的时间才能完成一次.于是,他想到用编程来完成华容道:给定一种局面, 华容道是否根本就无法完成,如果能完成, 最少需要多少时间. 小 ...

  7. ccf 201712-4 行车路线(30分超时)

    问题描述 小明和小芳出去乡村玩,小明负责开车,小芳来导航. 小芳将可能的道路分为大道和小道.大道比较好走,每走1公里小明会增加1的疲劳度.小道不好走,如果连续走小道,小明的疲劳值会快速增加,连续走s公 ...

  8. 【CCF CSP】 20171203 行车路线 Java(有问题)80分

    问题描述 小明和小芳出去乡村玩,小明负责开车,小芳来导航. 小芳将可能的道路分为大道和小道.大道比较好走,每走1公里小明会增加1的疲劳度.小道不好走,如果连续走小道,小明的疲劳值会快速增加,连续走s公 ...

  9. ccf 行车路线

    问题描述 小明和小芳出去乡村玩,小明负责开车,小芳来导航. 小芳将可能的道路分为大道和小道.大道比较好走,每走1公里小明会增加1的疲劳度.小道不好走,如果连续走小道,小明的疲劳值会快速增加,连续走s公 ...

随机推荐

  1. spring boot 使用RedisTemplate

    1导入包 <!-- redis --> <dependency> <groupId>org.springframework.boot</groupId> ...

  2. Kernel boot options

    There are three ways to pass options to the kernel and thus control its behavior: When building the ...

  3. BLE 5协议栈-直接测试模式

    文章转载自:http://www.sunyouqun.com/2017/04/page/3/ BLE协议充分考虑了设备的测试问题,在协议栈层面提供了直接测试模式,用于执行BLE设备的RF物理层一致性的 ...

  4. 对路径“xxxxx”的访问被拒绝。

    对路径“D:\\Weixin\\WechatWeb\\wapMxApi\\JsonFile\\WaterPrice.json”的访问被拒绝. 本地vs2013编译调试是没有问题的但是发布后就不能倍访问 ...

  5. MYSQL获得查询记录的行号

    对于获得查询记录的行号这一功能,Oracle 中可以使用标准方法(8i版本以上),也可以使用非标准的ROWNUM,MS SQL Server 则在 2005 版本中提供了ROW_NUMBER()函数. ...

  6. 牛客小白月赛12 C 华华给月月出题 (积性函数,线性筛)

    链接:https://ac.nowcoder.com/acm/contest/392/C 来源:牛客网 华华给月月出题 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K, ...

  7. 转 shell中的多进程【并发】

    原文地址https://bbs.51cto.com/thread-1104907-1-1.html 根据我个人的理解, 所谓的多进程 只不过是将多个任务放到后台执行而已,很多人都用到过,所以现在讲的主 ...

  8. nginx基本概述

    上级回顾: 1.NFS 2.Sersync 3.SSH 1.ssh使用两种登录服务器的方式,哪两种? 密码 用户名 + 密码 秘钥 用户名 + 秘钥(私钥) 公钥加密 私钥解密 2.大家常说的 塞ke ...

  9. TCP协议(包括TCP的连接过程,数据分段,TCP有关服务器优化)

    Transmission Control Protocol/Internet Protocol 传输控制协议/因特网互联协议 TCP/IP是一个Protocol Stack(协议栈),包括TCP.IP ...

  10. timestamp和datetime

    datetime数据类型在MySQL之前占8个字节,5.6之后占5个字节,datetime的范围1000-01-01 00:00:00------9999-12-31 23:59:59,格式采用YYY ...