Problem O

时间:2022-09-25 18:35:01
Problem Description
Before bridges
were common, ferries were used to transport cars across rivers.
River ferries, unlike their larger cousins, run on a guide line and
are powered by the river's current. Cars drive onto the ferry from
one end, the ferry crosses the river, and the cars exit from the
other end of the ferry.

There is a ferry across the river that can take n cars across the
river in t minutes and return in t minutes. m cars arrive at the
ferry terminal by a given schedule. What is the earliest time that
all the cars can be transported across the river? What is the
minimum number of trips that the operator must make to deliver all
cars by that time?
Input
The first line
of input contains c, the number of test cases. Each test case
begins with n, t, m. m lines follow, each giving the arrival time
for a car (in minutes since the beginning of the day). The operator
can run the ferry whenever he or she wishes, but can take only the
cars that have arrived up to that time.
Output
For each test
case, output a single line with two integers: the time, in minutes
since the beginning of the day, when the last car is delivered to
the other side of the river, and the minimum number of trips made
by the ferry to carry the cars within that time. < br><
br>You may assume that 0 < n, t, m < 1440. The arrival
times for each test case are in non-decreasing order.
Sample Input
2 2
10
10
10
20
30
40
50
60
70
80
90
2 10
3
10
30
40
Sample Output
100 5
50 2
题意:搬运车过河,但是并不是每一辆车都在一边等好的,每辆车到达岸边的时间有要求,一次最多搬运n辆车,需要时间t,并且回来也需要时间t,共有m辆车,求最少拌匀次数,且此时的用时。
解题思路:最少搬运次数不用想就是m%n?m/n+1:m/n;至于半时间如果m%n为零就就直接排好序之后每次搬n辆,要不的话就先把m%n搬走,让后面的车尽可能的少等;
感悟:做多了也没啥感悟了,最难的地方就是想贪心的条件;
代码(G++)
#include

#include

#define maxn 1444

using namespace std;

int main()

{

   
//freopen("in.txt", "r", stdin);

    int
c,t,n,m,wait_time[maxn],times=0,time=0,lost_car=0;

   
scanf("%d",&c);

    for(int
i=0;i

    {

       
time=times=0;

       
scanf("%d%d%d",&n,&t,&m);

       
//printf("n=%d t=%d m=%d\n",n,t,m);

       
for(int j=1;j<=m;j++)

           
scanf("%d",&wait_time[j]);

       
lost_car=m%n;

       
times=m%n?m/n+1:m/n;//最少运输的次数;

if(lost_car)

           
time=wait_time[lost_car]+t*2;

       
//printf("此时时间是%d\n",time);

       
for(int j=1;j<=m/n;j++)//总共运times次;

       
{

           
//printf("wait_time[j*n+lost_car]=%d\n",wait_time[j*n+lost_car]);

//printf("time=%d\n",time);

           
if(time

           
{

               
time+=2*t+(wait_time[j*n+lost_car]-time);

               
if(j==m/n)

                   
time-=t;//最后一次不用回去了

           
}

           
else//现在有车了

           
{

               
time+=2*t;

               
if(j==m/n)

               
time-=t;//最后一次不用回去了

           
}

           
//printf("此时时间是%d\n",time);

       
}


       
printf("%d %d\n",time,times);

    }

}

Problem O的更多相关文章

  1. 1199 Problem B&colon; 大小关系

    求有限集传递闭包的 Floyd Warshall 算法(矩阵实现) 其实就三重循环.zzuoj 1199 题 链接 http://acm.zzu.edu.cn:8000/problem.php?id= ...

  2. No-args constructor for class X does not exist&period; Register an InstanceCreator with Gson for this type to fix this problem&period;

    Gson解析JSON字符串时出现了下面的错误: No-args constructor for class X does not exist. Register an InstanceCreator ...

  3. C - NP-Hard Problem(二分图判定-染色法)

    C - NP-Hard Problem Crawling in process... Crawling failed Time Limit:2000MS     Memory Limit:262144 ...

  4. Time Consume Problem

    I joined the NodeJS online Course three weeks ago, but now I'm late about 2 weeks. I pay the codesch ...

  5. Programming Contest Problem Types

        Programming Contest Problem Types Hal Burch conducted an analysis over spring break of 1999 and ...

  6. hdu1032 Train Problem II &lpar;卡特兰数&rpar;

    题意: 给你一个数n,表示有n辆火车,编号从1到n,入站,问你有多少种出站的可能.    (题于文末) 知识点: ps:百度百科的卡特兰数讲的不错,注意看其参考的博客. 卡特兰数(Catalan):前 ...

  7. BZOJ2301&colon; &lbrack;HAOI2011&rsqb;Problem b&lbrack;莫比乌斯反演 容斥原理&rsqb;【学习笔记】

    2301: [HAOI2011]Problem b Time Limit: 50 Sec  Memory Limit: 256 MBSubmit: 4032  Solved: 1817[Submit] ...

  8. &lbrack;LeetCode&rsqb; Water and Jug Problem 水罐问题

    You are given two jugs with capacities x and y litres. There is an infinite amount of water supply a ...

  9. &lbrack;LeetCode&rsqb; The Skyline Problem 天际线问题

    A city's skyline is the outer contour of the silhouette formed by all the buildings in that city whe ...

  10. PHP curl报错&OpenCurlyDoubleQuote;Problem &lpar;2&rpar; in the Chunked-Encoded data”解决方案

    $s = curl_init(); curl_setopt($s, CURLOPT_POST, true); curl_setopt($s, CURLOPT_POSTFIELDS, $queryStr ...

随机推荐

  1. 编译器问题:运行maven,报错-Dmaven&period;multiModuleProjectDirectory system propery is not set&period; Check &dollar;M2&lowbar;HOME environment variable and mvn script match&period;

    1.新建环境变量M2_HOME 2.指向你的maven安装目录 例如 :M2_HOME=D:\Apps\apache-maven-3.3.9 3.进入Myeclipse进行修改,Window-> ...

  2. ASP&period;NET错误处理的方式(总结)

    转载至: http://www.cnblogs.com/chinhr/archive/2007/06/26/795947.html ASP.NET错误处理的方式(整理&总结)英文文章研究:ht ...

  3. ASP&period;NET MVC4学习笔记之Controller激活的扩展

    一. 为什么要进行扩展 在前面的分析中,我们知道默认的Controller激活系统只能实例化无参构造函数的Controller类型,但在某些情况一下,我们希望某些服务的实例能够自动注入到Control ...

  4. Java Concurrency - ReentrantLock

    ReentrantLock 是可重入的互斥锁,它具有与使用 synchronized 方法和语句所访问的隐式监视器锁相同的一些基本行为和语义,但功能更强大. ReentrantLock 将由最近成功获 ...

  5. 杭电oj 2719

    Tips:本程序没有什么难度,只要按照逻辑进行替换即可,需要注意的是,由于输入串中含有空格符号,所以不能使用scanf("%s",ch);来读取一串,可以使用gets()函数读取一 ...

  6. 非阻塞IO

    设置描述符非阻塞的两种方法: 1,调用 open 时,设置,O_NONBLOCK; 2,调用 fcntl设置: 具体如下: ,open("/xxx/file1",O_RDWR|O_ ...

  7. python学习-基础语法

    字符编码 1.python 2.x 默认是ASCII 编码 不支持中文,所以在代码有中文的时候 需要在文件最上一行加上#coding=utf-8.python 3.x则没有该问题. 变量命名规则 1. ...

  8. 第2章 熟悉Eclipse开发工具----加减乘除,和差积商的英文写法

    加减乘除表示运算:plus  minus multiply divide和差积商表示运算结果:sum difference product quotient

  9. Python:Day54 ORM

    Django项目中使用mysql DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'books', # ...

  10. &lbrack;LeetCode&rsqb; 367&period; Valid Perfect Square&lowbar;Easy tag&colon;Math

    Given a positive integer num, write a function which returns True if num is a perfect square else Fa ...