Mining
不会做,以为是流水线作业,可以推公式的。
https://blog.youkuaiyun.com/yifanstudy/article/details/38489693
重点是找到 每个机器的到场时间,如果前一个机器的 W 很长的话,下一个机器需要等着 上个 W 完成才行
如果是 W 比较小,那么到场时间就是有自己决定。
要么,后一个催前一个,要么前一个走了,后一个还没到场。
#include<bits/stdc++.h>
using namespace std;
priority_queue<int ,vector<int> ,greater<int> >rq;
int main()
{
int s,w,c,k,m;
while(cin>>s>>w>>c>>k>>m){
while(!rq.empty()){
rq.pop();
}
int n=9999/c+1;
for(int i=1;i<=k;i++)
rq.push(i*m+s);
int time=rq.top(); //第一次,一共去n 次
for(int i=0;i<n-1;i++)//还要去 n-1 次
{
rq.pop(); // 取出来了
rq.push(time+s+s+w); // 取出的这个 再考虑工作 ,来回 计算出这个机器的下一次到场时间。
if(rq.top()-time<w )
{
time+=w; //下个机器 要等上个机器 w 时间完成。
}
else
time=rq.top();
}
time=time+w+s;
cout<<time<<endl;
}
return 0;
}