[计蒜客20191103D] 坐车
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] 坐车的更多相关文章
- 计蒜客 作弊揭发者(string的应用)
鉴于我市拥堵的交通状况,市政交管部门经过听证决定在道路两侧安置自动停车收费系统.当车辆驶入车位,系统会通过配有的摄像头拍摄车辆画面,通过识别车牌上的数字.字母序列识别车牌,通过连接车管所车辆信息数据库 ...
- 计蒜客的一道题dfs
这是我无聊时在计蒜客发现的一道题. 题意: 蒜头君有一天闲来无事和小萌一起玩游戏,游戏的内容是这样的:他们不知道从哪里找到了N根不同长度的木棍, 看谁能猜出这些木棍一共能拼出多少个不同的不等边三角形. ...
- 计蒜客模拟赛5 D2T1 成绩统计
又到了一年一度的新生入学季了,清华和北大的计算机系同学都参加了同一场开学考试(因为两校兄弟情谊深厚嘛,来一场联考还是很正常的). 不幸的是,正当老师要统计大家的成绩时,世界上的所有计算机全部瘫痪了. ...
- 计蒜客 等边三角形 dfs
题目: https://www.jisuanke.com/course/2291/182238 思路: 1.dfs(int a,int b,int c,int index)//a,b,c三条边的边长, ...
- 计蒜客 方程的解数 dfs
题目: https://www.jisuanke.com/course/2291/182237 思路: 来自:https://blog.csdn.net/qq_29980371/article/det ...
- 计蒜客 买书 dfs
题目: https://www.jisuanke.com/course/2291/182236 思路: 递归解决,从第一本书开始,每本书都有两种选择: //index是book里面每本书价格的下标, ...
- 计蒜客:Entertainment Box
Ada, Bertrand and Charles often argue over which TV shows to watch, and to avoid some of their fight ...
- 爬虫acm比赛成绩(多页成绩整合在一起、获取复制不了的数据)(hihocoder、计蒜客)
https://github.com/congmingyige/web-crawler_rank-of-competition-in-JiSuanKe-and-hihocoder 1. 计蒜客(获取复 ...
- 计蒜客 31436 - 提高水平 - [状压DP]
题目链接:https://nanti.jisuanke.com/t/31436 作为一名车手,为了提高自身的姿势水平,平时的练习是必不可少的.小 J 每天的训练包含 $N$ 个训练项目,他会按照某个顺 ...
- 计蒜客 31434 - 广场车神 - [DP+前缀和]
题目链接:https://nanti.jisuanke.com/t/31434 小 D 是一位著名的车手,他热衷于在广场上飙车.每年儿童节过后,小 D 都会在广场上举行一场别样的车技大赛. 小 D 所 ...
随机推荐
- .NET Core基础到实战案例零碎学习笔记
前言:前段时间根据 [老张的哲学] 大佬讲解的视频做的笔记,讲的很不错.此文主要记录JWT/DI依赖注入/AOP面向切面编程/DTO/解决跨域等相关知识,还包含一些.NET Core项目实战的一些案例 ...
- ChatGPT赋能低代码开发:打造智能应用的双重引擎
摘要:本文摘自葡萄城低代码产品活字格的资深用户(格友超哥)所撰写的文章:<惊叹表现!活字格+ChatGPT:低代码开发智能应用的巨大潜力>. ChatGPT的functions函数使用方 ...
- uniapp 地图如何添加?你要的教程来喽!
地图在 app 中使用还是很广泛的,常见的应用常见有: 1.获取自己的位置,规划路线. 2.使用标记点进行标记多个位置. 3.绘制多边形,使用围墙标记位置等等. 此篇文章就以高德地图为例,以上述三个常 ...
- 《Kali渗透基础》04. 主动信息收集(一)
@ 目录 1:主动信息收集 2:发现 3:二层发现 3.1:arping 3.2:nmap 3.3:netdiscover 3.4:Scapy 4:三层发现 4.1:ping 4.2:Scapy 4. ...
- GitHub Actions CI/CD 工作流实战
1. 什么是 GitHub Actions 与 workflow ? GitHub Actions 是 GitHub 提供的一种持续集成(CI)和持续部署(CD)的工具,用于自动化软件开发过程中的各种 ...
- 了解API接口技术及其应用
在当今数字化时代,API(Application Programming Interface,应用程序接口)已成为了各行各业之间数据传输和交互的关键技术.无论是电商平台.社交媒体.金融系统,还是智能设 ...
- CodeForces 1367F1 Flying Sort (Easy Version)
题意 给一个长度为\(n\)的数组,数组中的数互不相同,你可以有两种操作 将某一个数放置在数组开头 将某一个数放置在数组结尾 问最小操作多少次可以得到一个递增数列 分析 因为数组中的数很大,我们可以将 ...
- Nomad 系列-快速上手
系列文章 Nomad 系列文章 Nomad 重要术语 Nomad 安装设置相关术语 agent - 代理.Agent 是在 Server(服务器) 或 Client(客户端) 模式下运行的 Nomad ...
- PanGu-Coder2:从排序中学习,激发大模型潜力
本文分享自华为云社区<PanGu-Coder2:从排序中学习,激发大模型潜力>,作者: 华为云软件分析Lab . 2022年7月,华为云PaaS技术创新Lab联合华为诺亚方舟语音语义实验室 ...
- RPG MAKER MV 打包APK教程(一键打包,无需编写任何代码)
HTML一键打包APK工具可以快速打包RPG Maker制作出来的游戏, 打包教程如下: 打包软件下载地址: 点击进入下载页面 打包步骤 1.准备好待打包的RPG Maker项目,放在系统的某一目录下 ...