ccf 201712-4 行车路线(70分)
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分)的更多相关文章
- ccf 201712-4 行车路线(Python实现)
一.原题 问题描述 试题编号: 201712-4 试题名称: 行车路线 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 小明和小芳出去乡村玩,小明负责开车,小芳来导航. 小芳将 ...
- 洛谷P4559 [JSOI2018]列队 【70分二分 + 主席树】
题目链接 洛谷P4559 题解 只会做\(70\)分的\(O(nlog^2n)\) 如果本来就在区间内的人是不用动的,区间右边的人往区间最右的那些空位跑,区间左边的人往区间最左的那些空位跑 找到这些空 ...
- 「PKUSC2018」星际穿越 (70分做法)
5371: [Pkusc2018]星际穿越 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 27 Solved: 11[Submit][Status] ...
- 洛谷P1979 华容道(70分 暴力)
P1979 华容道 题目描述 [问题描述] 小 B 最近迷上了华容道,可是他总是要花很长的时间才能完成一次.于是,他想到用编程来完成华容道:给定一种局面, 华容道是否根本就无法完成,如果能完成, 最少 ...
- 洛谷P1081 开车旅行70分
https://www.luogu.org/problem/show?pid=1081 太遗憾了明明写出来了,却把最小值初始值弄小了,从第二个点开始就不可能对了.70分! #include<io ...
- 华容道 noip2013 70分搜索
题目描述 [问题描述] 小 B 最近迷上了华容道,可是他总是要花很长的时间才能完成一次.于是,他想到用编程来完成华容道:给定一种局面, 华容道是否根本就无法完成,如果能完成, 最少需要多少时间. 小 ...
- ccf 201712-4 行车路线(30分超时)
问题描述 小明和小芳出去乡村玩,小明负责开车,小芳来导航. 小芳将可能的道路分为大道和小道.大道比较好走,每走1公里小明会增加1的疲劳度.小道不好走,如果连续走小道,小明的疲劳值会快速增加,连续走s公 ...
- 【CCF CSP】 20171203 行车路线 Java(有问题)80分
问题描述 小明和小芳出去乡村玩,小明负责开车,小芳来导航. 小芳将可能的道路分为大道和小道.大道比较好走,每走1公里小明会增加1的疲劳度.小道不好走,如果连续走小道,小明的疲劳值会快速增加,连续走s公 ...
- ccf 行车路线
问题描述 小明和小芳出去乡村玩,小明负责开车,小芳来导航. 小芳将可能的道路分为大道和小道.大道比较好走,每走1公里小明会增加1的疲劳度.小道不好走,如果连续走小道,小明的疲劳值会快速增加,连续走s公 ...
随机推荐
- StringUtils类API及使用方法详解
StringUtils类API及使用方法详解 StringUtils方法概览 判空函数 1)StringUtils.isEmpty(String str) 2)StringUtils.isNotEmp ...
- 日常开发用Windows 好还是 Ubuntu好?
最近打算给电脑重新装系统,纠结了很久,不知道应该是换Windows还是Ubuntu,今天通过我自身的体验,来为大家分析一下,日常开发环境到底是用Windows和Ubuntu. [系统介绍] Windo ...
- Java Web系统架构概览
大型网站系统架构的演进都是随着业务增长不断演进,所有的出发点都是为了满足业务需求.最初访问量下,功能简单时,单体软件可以解决所有问题:后来访问量逐渐增大,功能愈加丰富,此时单体软件的架构逐渐成为开发和 ...
- 读书笔记《Oracle从入门到精通》
目录 一.SQL基础 1.SQL种类 2.常用数据类型 3.DDL 4.约束 5.DML语句 二.SELECT语句 1.结果集'*'与指定列 2.拼接符 || 3.substr函数 4.instr函数 ...
- D - Beautiful Graph CodeForces - 1093D (二分图染色+方案数)
D - Beautiful Graph CodeForces - 1093D You are given an undirected unweighted graph consisting of nn ...
- struts2使用注解的时候遇到的问题
问题描述: 一切配置和注解都正确,但是无法访问action中的方法 解决问题: 之前将action层的包名命名成了web,改成action就对了 原因: struts2 ...
- 解决Windows jmeter Non HTTP response message: Address already in use: connect 错误(转载)
jMeter报错: Response code: Non HTTP response code: java.net.BindExceptionResponse message: Non HTTP re ...
- 去除IntelliJ IDEA中重复代码报灰黄色的下划波浪线
最近写Java在用IntelliJ IDEA这款传说中的神器IDE,看群里的大神们都在用,也耐不住寂寞想向大神们看齐一下.刚开始用,很多地方也不是很熟,今天遇到一个问题,导入一个项目后,看有些类里的代 ...
- 基于Kibana的可视化监控报警插件sentinl入门
sentinl是什么 Kibi/Kibana Alert & Reporting App Watching your data, 24/7/365 sentinl是一个免费的kibana预警与 ...
- 箭头函数中可改变this作用域,回调函数用箭头函数this指向page,自定义事件用箭头函数this指向undefined
1.回调函数中,用箭头函数改变this的作用域 success: (res)=>{ this.setData({ //此时,this指向page页面 ... }) } 2.自定义事件中,如果使用 ...