Public Bike Management (30)(DFS,VRCTOR,模拟)(PAT甲级)
#include<bits/stdc++.h>
using namespace std;
const int inf = 1e9;
int sum,n,tar,m;
int num[507];
int edge[507][507];
int u,v,val;
int mn=inf,mn_send=inf,mn_back=inf;
int cur=0,cur_send=0,cur_back=0;
int vis[507];
vector<int>cur_path,ans;
void dfs(int x){
if(cur>mn)//已经不是最短路,无需深入了
return;
if(x==tar){//到达目标点,有更优解就更新
if(cur<mn){
mn=cur;
mn_send=cur_send;
mn_back=cur_back;
ans=cur_path;
}
else if(cur==mn&&(cur_send<mn_send||cur_send==mn_send&&cur_back<mn_back)){
mn_send=cur_send;
mn_back=cur_back;
ans=cur_path;
}
return;
}
for(int i=1;i<=n;++i){
if(vis[i]||edge[x][i]==inf)//前面已经经过该点或者此路不通就换下一个点
continue;
vis[i]=1;
cur_path.push_back(i);//放进路径中
cur+=edge[x][i];//修改当前路径长度
int tmp_send=cur_send;//存放当前需要发出
int tmp_back=cur_back;//存放当前需要返回
if(num[i]+cur_back<sum/2)//如果当前站缺车
cur_send+=sum/2-num[i]-cur_back,cur_back=0;
else//当前站不缺车
cur_back+=num[i]-sum/2;
dfs(i);//在这个点的基础上接着深入
cur_path.pop_back();//还原到没有经过i点之前的状态
vis[i]=0;
cur-=edge[x][i];
cur_send=tmp_send;
cur_back=tmp_back;
}
}
int main(){
std::ios::sync_with_stdio(false);//关闭同步
cin>>sum>>n>>tar>>m;
for(int i=0;i<=n;++i)
for(int j=0;j<=n;++j)
edge[i][j]=inf,edge[j][i]=inf;//初始化让所有点之间路径无限长
for(int i=1;i<=n;++i)
cin>>num[i];
for(int i=1;i<=m;++i){
cin>>u>>v>>val;
edge[u][v]=val;
edge[v][u]=val;
}
dfs(0);//从根节点开始深度优先搜索
cout<<mn_send<<" 0";
for(auto&it:ans)
cout<<"->"<<it;
cout<<" "<<mn_back;
return 0;
}
Public Bike Management (30)(DFS,VRCTOR,模拟)(PAT甲级)的更多相关文章
- PAT 甲级 1018 Public Bike Management (30 分)(dijstra+dfs,dfs记录路径,做了两天)
1018 Public Bike Management (30 分) There is a public bike service in Hangzhou City which provides ...
- PAT Advanced 1018 Public Bike Management (30) [Dijkstra算法 + DFS]
题目 There is a public bike service in Hangzhou City which provides great convenience to the tourists ...
- pat Public Bike Management (30)
There is a public bike service in Hangzhou City which provides great convenience to the tourists fro ...
- 1018 Public Bike Management (30分) 思路分析 + 满分代码
题目 There is a public bike service in Hangzhou City which provides great convenience to the tourists ...
- 1018. Public Bike Management (30)
时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue There is a public bike service i ...
- 1018 Public Bike Management (30)(30 分)
时间限制400 ms 内存限制65536 kB 代码长度限制16000 B There is a public bike service in Hangzhou City which provides ...
- 1018 Public Bike Management (30 分)
There is a public bike service in Hangzhou City which provides great convenience to the tourists fro ...
- 1018 Public Bike Management (30分) PAT甲级真题 dijkstra + dfs
前言: 本题是我在浏览了柳神的代码后,记下的一次半转载式笔记,不经感叹柳神的强大orz,这里给出柳神的题解地址:https://blog.csdn.net/liuchuo/article/detail ...
- 【PAT甲级】1018 Public Bike Management (30 分)(SPFA,DFS)
题意: 输入四个正整数C,N,S,M(c<=100,n<=500),分别表示每个自行车站的最大容量,车站个数,此次行动的终点站以及接下来的M行输入即通路.接下来输入一行N个正整数表示每个自 ...
随机推荐
- 刷题向》一道逆向思维题(BZOJ1046)(NORMAL)
这道题对于一类题都有一个通用思路:反向递减序列即为正向字典序. 对于逆向思维的题还要多做才能培养这种对于逆向思维的感觉. 想到这种方法之后,就很简单了. 因为n×m不会炸,所以反向LIS叠一个贪心就能 ...
- coding创建项目
在本地,使用git 需要创建一个pom.xml文件,就可以导入到工作空间了! 在需要项目工作空间里,依次使用git命令执行 mkdir test //创建文件夹,项目名称cd test //切换 ...
- 如果习惯VisualStudio,可以如下实现.Shader文件的语法高亮。
如果习惯VisualStudio,可以如下实现.Shader文件的语法高亮. 下载作者donaldwu自己添加的关键词文件usertype.dat.其包括了Unity ShaderLab的部分关键字, ...
- NSArray & NSDictionary
一.NSArray 1.1 简单创建方法由难到简 NSArray *arr = [[NSArray alloc] init]; NSArray *arr = [NSArray arrayWithObj ...
- Java-随机数工具类
import java.util.Random; import java.util.concurrent.ThreadLocalRandom; import org.apache.commons.la ...
- python学习——查找计算机中文件位置
有时想查找某个文件时,却忘记了文件在计算机中存放的位置,这是一个经常遇到的问题. 当然如果你使用windows 7的话,可以直接用右上角的搜索框来搜索. 最近在学习python,正好拿这个来练练手,写 ...
- python处理Excel 之 xlrd-乾颐堂
python处理Excel常用到的模块是xlrd.使用xlrd可以非常方便的处理Excel文档,下面介绍一下基本用法 1.打开文件 import xlrd data= xlrd.open_workbo ...
- Part3_lesson2---ARM指令分类学习
1.算术和逻辑指令 mov.mvn.cmp.tst.sub.add.and.bic 2.比较指令 cmp和tst 3.跳转指令 b和bl 4.移位指令 lsl和ror 5.程序状态字访问指令 msr与 ...
- 4.3.3 thread对性能有何帮助
public class ThreadLocalDemo { public static final int GE_COUNT = 10000000; public static final int ...
- oracle中的表空间(tablespace)、方案(schema)、段(segment)、区(extent)、块(block)
数据文件和日志文件是数据库中最重要的文件.它们是数据存储的地方.每个数据库至少有一个与之相关的数据文件,通常情况下不只一个,有很多.数据在数据文件中是如何组织的?要了解这些内容我们首先必须理解什么是表 ...