/*
Name: uva 10440
Copyright: angieeve
Date: 10/04/13 22:22
Description: greedy
*/
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cmath>
#include <queue>
#include <cstring>
#include <algorithm>
using namespace std;
int arrtime[1500];
int Time,counts;
int casen,carrynum,carrytime,carnum;
void comput(int carrynum,int carrytime,int arrnum){
int dp[1500]={0},flag,count[1500]={0};
count[1]=1;dp[1]=arrtime[1]+carrytime*2;
for(int i=2;i<=carnum;i++){
int temp=0x7ffffff;flag=-1;
for(int k=i-carrynum;k>0&&k<i;k++){
if(dp[k]<temp){
temp=dp[k];
flag=k;
}
}
if(flag<0){
dp[i]=arrtime[i]+2*carrytime;
count[i]=1;
}
else{
dp[i]=max(dp[flag],arrtime[i])+2*carrytime;
count[i]=count[flag]+1;
}
}
Time=dp[carnum]-carrytime;
counts=count[carnum];
cout<<Time<<" "<<counts<<endl;
}
int main(){
cin>>casen;
while(casen--){
memset(arrtime,0,sizeof(arrtime));
cin>>carrynum>>carrytime>>carnum;
for(int i=1;i<=carnum;i++)
cin>>arrtime[i];
comput(carrynum,carrytime,carnum);
}
return 0;
}
uva 10440
最新推荐文章于 2018-08-12 21:31:13 发布