题目描述

从小明家所在公交站出发有n路公交到公司,现给出每路公交的停站数(不包括起点和终点),及每次停的时间(一路车在每个站停的时间相同)和发车的间隔,先假定每辆车同时在相对时间0分开始发车,且所有车在相邻两个站之间的耗时相同,都为5分钟。给定小明起床的相对时间(相对0的分钟数),请计算他最早到达公司的相对时间。

给定每路车的停站数stops,停站时间period,发车间隔interval及公交路数n,出发时间s。请返回最早到达时间。保证公交路数小于等于500,停站数小于等于50。

代码如下:

 package com.yzh.hehe;

 import java.util.Scanner;

 public class TakeBusChooseLine {

     public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
// "[13,15,26,7,27,3,30],[1,2,1,2,2,2,1],[5,1,4,3,2,1,4],7,10"
while (scanner.hasNext()) { String string=scanner.nextLine();
// String string1="\"[13,15,26,7,27,3,30],[1,2,1,2,2,2,1],[5,1,4,3,2,1,4],7,10\"";
// String string2="[13,15,26,7,27,3,30],[1,2,1,2,2,2,1],[5,1,4,3,2,1,4],7,10";
String[] sArr=string.split("]");
int n=Integer.parseInt(sArr[3].split(",")[1]);
string=sArr[3].split(",")[2];
int s=Integer.parseInt(string.substring(0, string.length()-1));
String[] stopStrings=sArr[0].substring(2).split(",");
String[] periodStrings=sArr[1].substring(2).split(",");
String[] intervalStrings=sArr[2].substring(2).split(",");
int[] stops=new int[n],period=new int[n],interval=new int[n];
for (int i = 0; i < n; i++) {
stops[i]=Integer.parseInt(stopStrings[i]);
period[i]=Integer.parseInt(periodStrings[i]);
interval[i]=Integer.parseInt(intervalStrings[i]); }
System.out.println(takeBusChooseLine(stops, period, interval, n, s)); }
scanner.close(); } /*
* 三部分组成: 等待上车时间(interval[i]-s%interval[i]);车站停靠时间(stops[i]*period[i]);路上行动时间((stops[i]+1)*5),根据贪心原则三者时间和最短者最先到公司,记得结果要加上起床时的相对时间
*/
private static int takeBusChooseLine(int[] stops, int[] period, int[] interval, int n, int s) {
int kaishi=interval[0]-s%interval[0]; int shortest=(kaishi==interval[0]?0:kaishi)+stops[0]*period[0]+(stops[0]+1)*5;;
int temp=0;
for (int i = 1; i < n; i++) {
kaishi=interval[i]-s%interval[i];
temp=(kaishi==interval[i]?0:kaishi)+stops[i]*period[i]+(stops[i]+1)*5;
shortest=shortest>temp?temp:shortest;
}
return shortest+s;
}
}

解题(TakeBusChooseLine)的更多相关文章

  1. SCNU ACM 2016新生赛决赛 解题报告

    新生初赛题目.解题思路.参考代码一览 A. 拒绝虐狗 Problem Description CZJ 去排队打饭的时候看到前面有几对情侣秀恩爱,作为单身狗的 CZJ 表示很难受. 现在给出一个字符串代 ...

  2. SCNU ACM 2016新生赛初赛 解题报告

    新生初赛题目.解题思路.参考代码一览 1001. 无聊的日常 Problem Description 两位小朋友小A和小B无聊时玩了个游戏,在限定时间内说出一排数字,那边说出的数大就赢,你的工作是帮他 ...

  3. HDU 3791二叉搜索树解题(解题报告)

    1.题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=3791 2.参考解题 http://blog.csdn.net/u013447865/articl ...

  4. 【BZOJ1700】[Usaco2007 Jan]Problem Solving 解题 动态规划

    [BZOJ1700][Usaco2007 Jan]Problem Solving 解题 Description 过去的日子里,农夫John的牛没有任何题目. 可是现在他们有题目,有很多的题目. 精确地 ...

  5. CH Round #56 - 国庆节欢乐赛解题报告

    最近CH上的比赛很多,在此会全部写出解题报告,与大家交流一下解题方法与技巧. T1 魔幻森林 描述 Cortana来到了一片魔幻森林,这片森林可以被视作一个N*M的矩阵,矩阵中的每个位置上都长着一棵树 ...

  6. wechall.net/stegano 解题心得

    /* 转载请注明出处:http://www.cnblogs.com/Martinium/p/wechall_stegano.html */ 最近迷上了 www.wechall.net 网站,里面都是些 ...

  7. Mountains(CVTE面试题)解题报告

    题目大意: 用一个数组代表群山的高度.高度大的地方代表山峰,小的地方代表山谷.山谷可以容水.假设有一天下了大雨,求群山中总共可以容纳多少水? 如图所示情况,a代表该数组,总共可以容纳5个水. 解题思路 ...

  8. timus 1180. Stone Game 解题报告

    1.题目: 1180. Stone Game Time limit: 1.0 secondMemory limit: 64 MB Two Nikifors play a funny game. The ...

  9. timus 1175. Strange Sequence 解题报告

    1.题目描述: 1175. Strange Sequence Time limit: 1.0 secondMemory limit: 2 MB You have been asked to disco ...

随机推荐

  1. Python全栈之路----进制运算

    1.进制拾遗 二进制:01 八进制:01234567 十进制:0123456789 十六进制:0123456789ABCDEF  (a是10,b是11,c是12,d是13,e是14,f是15) 2.进 ...

  2. python中序列化模块json和pickle

    json模块:json是第三方包,不是系统内置模块,以字符串序列 常用操作有: json.dumps() # 将变量序列化,即将功能性字符转化为字符串 例: >>> import j ...

  3. 《从Lucene到Elasticsearch:全文检索实战》学习笔记二

    今天我给大家讲讲分词算法 分词算法概述:词是语义的最小单位.分词对搜索引擎的作用很大,可以促进搜索引擎程序自动识别语句的含义,可以提高搜索结果的匹配度,分析的质量也将直接影响了搜索结果的精确度.分词存 ...

  4. Android SDK的下载与安装

    一.Android SDK简介 Android SDK(Software Development Kit,软件开发工具包)被软件开发工程师用于为特定的软件包.软件框架.硬件平台.操作系统等建立应用软件 ...

  5. 使用deb 打包开发的postgres extension 另外一种方法

    已经写过一个deb 包打包的方法,我们同时也可以使用dpkg-deb 命令 安装依赖工具包 推荐安装全点的 sudo apt-get install build-essential autoconf ...

  6. day 12

    一,什么是装饰器? 装饰器本质上就是一个python函数,他可以让其他函数在不需要做任何代码变动的前提下,增加额外的功能,装饰器的返回值也是一个函数对象. 装饰器的应用场景:比如插入日志,性能测试,事 ...

  7. Centos7创建CA和申请证书 转自https://www.cnblogs.com/mingzhang/p/8949541.html

    Centos7.3创建CA和申请证书 openssl 的配置文件:/etc/pki/tls/openssl.cnf 重要参数配置路径 dir   = /etc/pki/CA               ...

  8. NFC应用于公交卡

    NFC应用于公交卡https://www.cnblogs.com/liuzhaoyzz/p/7115098.html 带有NFC功能的安卓手机可以给实体公交卡充值,手机虚拟公交卡现在有两种方案,一种是 ...

  9. Python的xml模块

    先来一段xml代码 <?xml version="1.0"?> <data> <country name="Liechtenstein&qu ...

  10. 涨姿势:深入 foreach循环

    我们知道集合中的遍历都是通过迭代(iterator)完成的. 也许有人说,不一定非要使用迭代,如: List<String> list = new LinkedList<String ...