?? main.cpp
字號:
#include "stdio.h"
#define MAXSIZE 1000
int main()
{
int search(double dis[],double price[],double content,double distance2,int n);
int k=1,l;//數(shù)據(jù)組數(shù)
int i;//i用來循環(huán)
double distance1,content,distance2;//A到B的距離,油箱容量,每升油能走的距離
int n;//沿途油站數(shù)
double dis[MAXSIZE+1]={0};//用來存放各站點到起點的距離
double price[MAXSIZE+1]={0};
scanf("%d",&l);
while(k<=l)
{
scanf("%lf%lf%lf%d",&distance1,&content,&distance2,&n);
for(i=1;i<=n;i++)
scanf("%lf",&dis[i]);
dis[i]=distance1;
for(i=1;i<=n;i++)
scanf("%lf",&price[i]);
price[i]=0;
search(dis,price,content,distance2,n);
k++;
}
return 1;
}
int search(double dis[],double price[],double content,double distance2,int n)
{
int i,j=0;//用與循環(huán)
double total=0.0;//總共的油價
double temp;//存放郵箱里的剩余油量
temp=0.0;
for (i=1;i<=n;i++)
{
j=i+1;
temp=temp-(dis[i]-dis[i-1])/distance2;
if(distance2*content<dis[i+1]-dis[i])
{
printf("No Solution\n");
return 0;
}
while((price[i]<price[j])&&(j<=n+1))
j++;
if(dis[j]-dis[i]<=content*distance2)
{
if(temp*distance2>=dis[j]-dis[i])
{
// temp=temp-(dis[i]-dis[i-1])/distance2;
total=total;
}
else
{
total=total+((dis[j]-dis[i])/distance2-temp)*price[i];
temp=(dis[j]-dis[i])/distance2;
}
}
if(dis[j]-dis[i]>content*distance2)
{
total=total+content*price[i];
temp=content;
}
}
printf("%.1lf\n",total);
return 1;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -