当前位置: 代码迷 >> 综合 >> Hust oj 1608 XianGe的旅途(水题)
  详细解决方案

Hust oj 1608 XianGe的旅途(水题)

热度:98   发布时间:2023-12-22 04:25:33.0
XianGe的旅途
Time Limit: 1000 MS Memory Limit: 65535 K
Total Submit: 49(32 users) Total Accepted: 32(30 users) Rating: Special Judge: No
Description

XianGe要驾驶自己的汽车外出旅游一番。作为一名程序员,旅游的路线都是早已规划好,他要按照定好的路线行驶,在这路线上,有n个加油站,编号从0n-1XianGe0n-1依次旅行,并且要到达的目的地编号是n,即从加油站n-1到达目的地n,加油站 i到加油站i+1的距离是d[i],第i个加油站的每单位容量油价是p[i],假设汽车的油箱没有上限,可以在任意一个加油站加任意容量的汽油。

汽车用1单位容量的汽油能行驶1单位距离的路程。

现在需要你计算出到达目的地n的最小花费。
Input

有多组测试数据,对于每组测试数据,第一行为n1<=n<=100000),第二行含n个数,分别表示di1<=di<=100),第三行含n个数,分别表示pi(1<=pi<=100)

处理到文件结束,测试数据不超过10组。

Output

到达目的地最小的油量花费。

Sample Input
3
1 2 3
1 1 5
5
1 2 3 4 5
5 4 3 2 1
Sample Output
6
35
记录一下最小值就行了。。
#include<cstdio>
#include<iostream>
using namespace std;const int Maxn = 100005;
int n;
int dis[Maxn];
int val[Maxn];int main()
{while(~scanf("%d",&n)){for(int i=0;i<n;i++){scanf("%d",&dis[i]);}for(int i=0;i<n;i++){scanf("%d",&val[i]);}int Min = val[0];int sum = 0;for(int i=0;i<n;i++){if(val[i] < Min)Min = val[i];sum += Min * dis[i];}printf("%d\n",sum);}
}