一、题目编号:
Problem O
二、简单题意:
m辆汽车靠轮船摆渡过河,一个船一次能载n辆车,摆渡一次的时间为t,给出车到达的时间序列,求所有车都渡过河的最早时间和船摆渡的最少次数。
三、解题思路形成过程
利用贪心算法,尽量每次摆渡船都是满载。利用循环,如果没渡河的车数小于等于船载数,则一次就可以渡过河,最早时间为最后一辆车的到达时间加上渡河时间,跳出循环。如果没渡河的车数大于船载数,则渡河次数加1,没渡河的车数减去船载数,依次循环。
四、感想
这个题不难~
五、AC代码
#include<iostream>using namespace std;
int main()
{
int c,n,t,m;
cin>>c;
while(c--)
{
int time[2000];
cin>>n>>t>>m;
for(int i=0;i<m;i++)
cin>>time[i];
int total=m;
int num=0,atime=0;
for(int i=-1;;)
{
if(total<=n)
{
num++;
atime=time[i+n]+t;
break;
}
else
{
num++;
atime=time[i+n]+2*t;
total-=n;
i+=n;
}
}
cout<<atime<<" "<<num<<endl;
}
return 0;
}