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. Redis的五大数据类型的数据结构

    概述   Redis底层有六种数据类型包括:简单动态字符串.双向链表.压缩列表.哈希表.跳表和整数数组.这六种数据结构五大数据类型关系如下: String:简单动态字符串 List:双向链表.压缩列表 ...

  2. 文盘Rust——起手式,CLI程序

    技术的学习从不会到会的过程是最有意思的,也是体会最多的.一旦熟练了,知识变成了常识,可能就失去了记录学习过程的最佳时机. 在我看来学习一门计算机语言和学习人类语言有很多共通之处.我们学习人类语言是从单 ...

  3. 云原生(docker jenkins k8s)docker篇

    docker (1)架构 ● Docker_Host: ○ 安装Docker的主机 ● Docker Daemon: ○ 运行在Docker主机上的Docker后台进程 ● Client: ○ 操作D ...

  4. k8s证书到期处理

    证书续期提示 当执行kubectl get nodes等提示 Unable to connect to the server: x509: certificate has expired or is ...

  5. 兴达易控Modbus转Profinet 网关连接 ACS510 变频器配置案例

    案例简介: 该案例为兴达易控Modbus转Profinet网关(XD-MDPN100)将ABB ACS510 变频器接入西门子 1200PLC.需要设备为西门子 PLC1200.ACS510 变频器. ...

  6. TopCoder 15903 EllysNim

    TopCoder 15903 EllysNim(https://vjudge.net/problem/TopCoder-15903) \(n\)看似有点东西,实际上就只是一个贪心... 设\(i\)表 ...

  7. 虹科案例 | 石油天然气行业CFD高性能计算解决方案

    公司简介 DNV GL 是全球领先的能源.石油和海事行业风险管理及资产绩效提升的软件供应商,主要为客户提供全面的风险管理和各类评估认证服务,认证涉及信息通信技术.汽车及航空天.食品与饮料.医疗等方面. ...

  8. [ABC276Ex] Construct a Matrix

    没有题解,所以来写一篇. Description 构造一个 \(N\times N\) 的矩阵 \(A\),其中 \(A_{i,j}\in {0,1,2}\),要求同时满足 \(Q\) 条限制. 每条 ...

  9. QT(8)-QSpinBox

    QSpinBox 1 介绍 QSpinBox 是 Qt 中的一种数字输入控件,支持整数和浮点数输入.它允许用户通过上下箭头或键盘输入来选择数字.您可以设置最小值.最大值和步长,以限制用户输入的范围.Q ...

  10. java4.switch条件语句、循环结构

    switch条件语句.循环结构 循环结构 while 1.先判断再执行代码 2.代码块至少执行0次 do-while- 1.先执行代码再执行判断 2.代码块至少执行1次 for 1.用于编写已知循环次 ...