n 个学生将要坐车去餐厅,每辆车最多可以坐 5 个人并且出于对环境的考虑他们不会使用多余的车.车的速度为每秒 1 个单位。现在 ii 号同学需要去 \(i\) 号点停 5 分钟(此时整车都在 i 号点等待),他们现在希望最小化花费时间最长的车花费的时间. 0 号点为起点,\(n+1\) 号点为餐厅

输入格式

第一行两个整数分别表示 \(n,m\)

接下来 m 行每行三个整数分别是 u,v,w,表示这条路连接 u,v 长度为 w

输出格式

输出花费时间最长的车花费时间最小为多少

数据范围

对于 30% 的数据,$ 1 \leq n \leq 5$

对于 50% 的数据, \(1 \leq n \leq 10\)

对于 100% 的数据,$ 1 \leq n \leq 15,1 \leq m \leq 1000,0 \leq u,v \leq n+1,1 \leq w \leq 10^7$

7

输出时每行末尾的多余空格,不影响答案正确性

样例输入

7 15
0 1 100
8 1 100
0 2 100
8 2 100
0 3 100
8 3 100
0 3 50
3 4 50
3 5 40
1 5 50
5 6 20
1 6 20
3 6 10
6 7 10
7 8 10

样例输出复制

280

首先可以用Floyd算出任意两点之间的距离。

然后可以暴力枚举怎么分组,每一组暴力看按什么顺序会最优。但是这样会超时。

所以我们在枚举出来每一组后记下来这一种分配全排列的最优值。也就是说,如果有一次分出来(1,2,3,4,5)一组,那么就计算完后记录答案,下一次把(1,2,3,4,5)分到一组时,就可以直接回答。这样就可以过了。

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int u,v,w,n,m;
int dp[25][25],t[25],st[5][10],jyh[25][25][25][25][25];
long long ans=1LL*1e18,cnt,ret;
long long check(int x,int g[25])
{
if(jyh[g[1]][g[2]][g[3]][g[4]][g[5]])
return jyh[g[1]][g[2]][g[3]][g[4]][g[5]];
ret=1000000000,t;
do
{
long long t=0;
for(int i=2;i<=x;i++)
t+=dp[g[i]][g[i-1]];
t+=dp[0][g[1]]+dp[g[x]][n+1];
ret=min(ret,t);
}while(next_permutation(g+1,g+x+1));
return jyh[g[1]][g[2]][g[3]][g[4]][g[5]]=ret+x*5;
}
void dfs(int x)
{
if(x>n)
{
cnt=0;
for(int i=1;i<=m;i++)
cnt=max(check(t[i],st[i]),cnt);
ans=min(ans,cnt);
}
for(int i=1;i<=m;i++)
{
if(t[i]<5)
{
st[i][++t[i]]=x;
dfs(x+1);
st[i][t[i]--]=0;
}
}
}
int main()
{
memset(dp,0x3f,sizeof(dp));
cin>>n>>m;
while(m--)
{
cin>>u>>v>>w;
dp[u][v]=dp[v][u]=min(dp[u][v],w);
}
for(int k=0;k<=n+1;k++)
for(int i=0;i<=n+1;i++)
for(int j=0;j<=n+1;j++)
dp[i][j]=min(dp[i][j],dp[i][k]+dp[k][j]); m=(n-1)/5+1;
dfs(1);
cout<<ans<<endl;
}

[计蒜客20191103D] 坐车的更多相关文章

  1. 计蒜客 作弊揭发者(string的应用)

    鉴于我市拥堵的交通状况,市政交管部门经过听证决定在道路两侧安置自动停车收费系统.当车辆驶入车位,系统会通过配有的摄像头拍摄车辆画面,通过识别车牌上的数字.字母序列识别车牌,通过连接车管所车辆信息数据库 ...

  2. 计蒜客的一道题dfs

    这是我无聊时在计蒜客发现的一道题. 题意: 蒜头君有一天闲来无事和小萌一起玩游戏,游戏的内容是这样的:他们不知道从哪里找到了N根不同长度的木棍, 看谁能猜出这些木棍一共能拼出多少个不同的不等边三角形. ...

  3. 计蒜客模拟赛5 D2T1 成绩统计

    又到了一年一度的新生入学季了,清华和北大的计算机系同学都参加了同一场开学考试(因为两校兄弟情谊深厚嘛,来一场联考还是很正常的). 不幸的是,正当老师要统计大家的成绩时,世界上的所有计算机全部瘫痪了. ...

  4. 计蒜客 等边三角形 dfs

    题目: https://www.jisuanke.com/course/2291/182238 思路: 1.dfs(int a,int b,int c,int index)//a,b,c三条边的边长, ...

  5. 计蒜客 方程的解数 dfs

    题目: https://www.jisuanke.com/course/2291/182237 思路: 来自:https://blog.csdn.net/qq_29980371/article/det ...

  6. 计蒜客 买书 dfs

    题目: https://www.jisuanke.com/course/2291/182236 思路: 递归解决,从第一本书开始,每本书都有两种选择: //index是book里面每本书价格的下标, ...

  7. 计蒜客:Entertainment Box

    Ada, Bertrand and Charles often argue over which TV shows to watch, and to avoid some of their fight ...

  8. 爬虫acm比赛成绩(多页成绩整合在一起、获取复制不了的数据)(hihocoder、计蒜客)

    https://github.com/congmingyige/web-crawler_rank-of-competition-in-JiSuanKe-and-hihocoder 1. 计蒜客(获取复 ...

  9. 计蒜客 31436 - 提高水平 - [状压DP]

    题目链接:https://nanti.jisuanke.com/t/31436 作为一名车手,为了提高自身的姿势水平,平时的练习是必不可少的.小 J 每天的训练包含 $N$ 个训练项目,他会按照某个顺 ...

  10. 计蒜客 31434 - 广场车神 - [DP+前缀和]

    题目链接:https://nanti.jisuanke.com/t/31434 小 D 是一位著名的车手,他热衷于在广场上飙车.每年儿童节过后,小 D 都会在广场上举行一场别样的车技大赛. 小 D 所 ...

随机推荐

  1. 《Kali渗透基础》08. 弱点扫描(二)

    @ 目录 1:OpenVAS / GVM 1.1:介绍 1.2:安装 1.3:使用 2:Nessus 2.1:介绍 2.2:安装 2.3:使用 3:Nexpose 本系列侧重方法论,各工具只是实现目标 ...

  2. 【译】在 Visual Studio 中处理图像变得更容易了

    任何 Web.桌面或移动开发人员都经常使用图像.你可以从 C#.HTML.XAML.CSS.C++.TypeScript 甚至代码注释中引用它们.有些图像是本地的,有些存在于线上或网络共享中,而其他图 ...

  3. API接口的重要性

    API接口的重要性在现代软件开发中无可替代.以下是API接口的几个重要方面: 1. 实现系统集成:API接口允许不同应用程序之间实现数据共享和交流.通过API接口,不同的软件系统可以相互连接和协作,实 ...

  4. 代码检视的新姿势!在IDEA中得到沉浸式Code Review新体验

    大家好,好久不见,又见面了. 在消失的这段时间里,我做了件大事,见证了儿子的出生并陪伴其一天天的成长.停止更文的200多天里,还能得到小伙伴们持续的支持,让我备受鼓励.对一个技术人员而言,分享技术观点 ...

  5. 【目标检测】RCNN算法实现

    一.前言 RCNN(Regions with CNN features)算法由Ross Girshick在2014年的论文"Rich feature hierarchies for accu ...

  6. 最火前端 Web 组态软件 (可视化)

    ​  前言: 随着物联网.大数据等技术高速发展,我们逐步向数字化.可视化的人工智能(AI)时代的方向不断迈进.智能时代是工业 4.0 时代,我国工业领域正努力从"制造"迈向&quo ...

  7. Dubbo3应用开发—Dubbo序列化方案(Kryo、FST、FASTJSON2、ProtoBuf序列化方案的介绍和使用)

    Dubbo序列化方案(Kryo.FST.FASTJSON2.ProtoBuf序列化方案的介绍和使用) 序列化简介 序列化是Dubbo在RPC中非常重要的一个组成部分,其核心作用就是把网络传输中的数据, ...

  8. oracle 问题:ORA-28040:没有匹配的验证协议

    Oracle11g客户端连接Oracle12C服务器端,需配置项 前置条件:已安装Oracle11g客户端,配置好环境变量,用PL/SQL Developer登录数据库 出现问题:登录数据库时,提示& ...

  9. Redis系列24:Redis使用规范

    Redis系列1:深刻理解高性能Redis的本质 Redis系列2:数据持久化提高可用性 Redis系列3:高可用之主从架构 Redis系列4:高可用之Sentinel(哨兵模式) Redis系列5: ...

  10. CIC滤波器仿真与实验过程及结果记录

    整理于2023-10-08 0.0 前言: 前面介绍了使用matlab中的Filter Designer工具箱进行CIC抽取滤波器设计的仿真过程与结果.下面在前面的基础上针对现有的[正点原子ZYNQ] ...