【DTOJ Begin】1019. 过桥(bridge)
目录
- 题目描述
- 输入格式
- 输出格式
- 样例
- Solution
- AC Code
题目描述
现有N辆车要按顺序通过一个单向的小桥,由于小桥太窄,不能有两辆车并排通过。另外,由于小桥建造的时间已经很久,只能承受有限的重量,记为Max(吨)。管理员将N辆车按初始的顺序分组,每次让一个组过桥,并且只有在一个组的车辆全部过桥后,下一组车辆才能上桥。每辆车的重量和最大速度是已知的,而每组车的过桥时间由该组中速度最慢的那辆车决定。请你帮管理员编一个程序,将这N辆车分组,使得全部车辆通过小桥的时间最短。
输入格式
第一行有3个数字,分别为Max(吨),Len(桥的长度,单位km),N(3个数之间用一个或多个空格隔开)。
接下来又N行,每行两个数,第i行的两个数分别表示第i辆车的重量w(吨)和最大速度v(km/h)。
max,len,w,v不超过32位有符号整数类型的最大值,且为整数n<1000
输出格式
全部车辆通过小桥的最短时间(minute),精确到小数点后一位。
样例
样例输入
100 4 10
40 25
50 20
50 20
70 10
12 50
9 70
49 30
38 25
27 50
19 70
样例输出
60.0
Solution
题目要求按照初始的顺序分组,所以必须按照 1∼n1\sim n1∼n 的顺序过桥,所以设 f[i]f[i]f[i] 表示从 111 到 iii 需要花费的最小时间,则可以先预处理出每一组车 [i,j][i,j][i,j] 在不考虑重量限制的情况下的通过时间 g[i,j]g[i,j]g[i,j],则状态转移方程为:
g[i,j]=max(g[i,j−1],g[j,j])f[i]=min1≤j≤i{f[j−1]+g[j][i]}\begin{matrix} g[i,j]=max(g[i,j-1],g[j,j])\\\\ f[i]=\min\limits_{_{1\le\ j\ \le\ i}}\left\{ f[j-1]+g[j][i]\right\} \end{matrix}g[i,j]=max(g[i,j−1],g[j,j])f[i]=1≤ j ≤ imin{f[j−1]+g[j][i]}
初值:f[i]=INF,g[i,i]=Time(i)f[i]=\mathrm{INF},g[i,i]=Time(i)f[i]=INF,g[i,i]=Time(i)
目标:f[n]f[n]f[n]
AC Code
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;const int N=1005;int m,n;
int s[N];
double g[N][N],f[N],l,v;int main()
{scanf("%d%lf%d",&m,&l,&n);for(register int i=1;i<=n;i++){scanf("%d%lf",&s[i],&g[i][i]);s[i]+=s[i-1];g[i][i]=(l/g[i][i])*60;}for(register int i=1;i<=n;i++){for(register int j=i+1;j<=n;j++)g[i][j]=max(g[i][j-1],g[j][j]);}for(register int i=1;i<=n;i++){f[i]=1e9; //double不要用memsetfor(register int j=1;j<=i;j++)if(s[i]-s[j-1]<=m) f[i]=min(f[i],f[j-1]+g[j][i]);}printf("%.1lf\n",f[n]);return 0;
}
【DTOJ Begin】1019. 过桥(bridge)相关推荐
- 迁移wordpress_WordPress迁移变得容易
迁移wordpress In this article, we're going to cover the various ways you can migrate your website to W ...
- TurtleBot3 循线机器人
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 TurtleBot3 循线机器人 前言 一.按装TurtleBot3 二.传感器的使用 三.循线设计 四.循线脚本 总结 前言 由于时 ...
- 【水】uva10037 过桥
给出n个人所需过桥的时间,每次最多两人过桥,过桥时间为最长的人的时间.求最快所有人全部过桥方案. 贪心.先从小到大排,易知 n=1 时 ans=a[1] n=2,ans=max(a[1],a[2]) ...
- codevs——1019 集合论与图论
1019 集合论与图论 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 集合论与图论对于小松来说是比数字 ...
- HDU6218 2017ACM/ICPC亚洲区沈阳站 Bridge(Set,线段树)
HDU6218 2017ACM/ICPC亚洲区沈阳站 Bridge Solution 我们考虑维护在环上的边的个数,答案就是总边数减去环上边数. 环的形态是这样的:(0,l),(0,l+1)...(0 ...
- C++学习之路 | PTA乙级—— 1019 数字黑洞 (20分)(精简)
1019 数字黑洞 (20分) 给定任一个各位数字不完全相同的 4 位正整数,如果我们先把 4 个数字按非递增排序,再按非递减排序,然后用第 1 个数字减第 2 个数字,将得到一个新的数字.一直重复这 ...
- Java 多线程 南北多人过桥
有一个南北走向的桥,南边有4人,北边有3人,分别让他们到达对面,桥只能容纳一人通过.显示出每个人的过桥状态. TestBridge.java class PersonPassBridge extend ...
- 1019 数字黑洞 (20)
给定任一个各位数字不完全相同的4位正整数,如果我们先把4个数字按非递增排序,再按非递减排序,然后用第1个数字减第2个数字,将得到一个新的数字.一直重复这样做,我们很快会停在有"数字黑洞&qu ...
- 【DTOJ】2701:问候
DTOJ 2701:问候 解题报告 2017.11.08 第一版 --由翱翔的逗比w原创,引用yzl_rex的CSDN博客 题目信息: 题目描述 问候人类! 输入 输入一行,一个名字,如human( ...
最新文章
- 如何从Oracle数据库中的表中获取列名(字段名)列表?
- JAXB 转 XML乱码
- SQL Server中count(*), count(col), count(1)的对比
- MongoDB对文档的操作
- [转]chroot的使用
- murmur3 php,MySQL5.7 切不要乱射 --transaction-write-set-extraction=MURMUR32
- 栈空间_Linux中的进程栈和线程栈
- java 蓝桥杯算法训练 快速排序
- 格雷码 Gray Code
- java线程的状态改变(练习)
- 好看兼好用的编程专用字体
- Hadoop综合大作业
- Shell编程之正则表达式与文本处理器(一)
- openresty 网关rsa+aes+redis鉴权解密
- 计算机的文件怎么加密码怎么设置,文件夹怎么设置密码,教您怎么设置
- 【Latex】将TIF文件转换成EPS文件
- python监听多个udp端口_尝试实现非阻塞python-udp多端口获取wierd异常
- 统计正数和负数的个数然后计算这些数的平均值。
- eclipse 创建java窗体_eclipse新建窗体类
- 计算机认知矫正发展史,计算机认知矫正疗法对儿童认知功能的影响.pdf
热门文章
- socket 科普文章
- 全球及中国镱 (Yb) 蒸发材料行业深度研究及未来发展趋势调研报告2021年版
- oracle数据库中的回收站,Oracle 10G 中的"回收站"-数据库专栏,ORACLE
- jq和js的关系_jQuery与JavaScript有什么关系?
- 计算机管理找不到防火墙,手把手解答win10系统防火墙服务找不到的问题
- 基于FFmpeg+SDL的视频播放器的制作-基础知识
- i5 11300H和r5 5500u的差距大不大
- 亵渎小说介绍_从PHP过渡到:亵渎神灵,虚张声势还是常识?
- java 虚拟机JVM
- c语言倍增算法,用倍增公式选股