ZCMU-1309-Vasya and Public Transport

来源:互联网 发布:淘宝开放平台接口 编辑:程序博客网 时间:2024/05/09 21:14

1309: Vasya and Public Transport

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 42  Solved: 28
[Submit][Status][Web Board]

Description

Vasya often uses public transport. The transport in the city is of two types: trolleys and buses. The city has n buses and m trolleys, the buses are numbered by integers from 1 to n, the trolleys are numbered by integers from 1 to m.

Public transport is not free. There are 4 types of tickets:

1.A ticket for one ride on some bus or trolley. It costs c1 burles;
2. A ticket for an unlimited number of rides on some bus or on some trolley. It costs c2 burles;
3.A ticket for an unlimited number of rides on all buses or all trolleys. It costs c3 burles;
4.A ticket for an unlimited number of rides on all buses and trolleys. It costs c4 burles.

Vasya knows for sure the number of rides he is going to make and the transport he is going to use. He asked you for help to find the minimum sum of burles he will have to spend on the tickets.

Input

The first line contains four integers c1, c2, c3, c4 (1 ≤ c1, c2, c3, c4 ≤ 1000) — the costs of the tickets.

The second line contains two integers n and m (1 ≤ n, m ≤ 1000) — the number of buses and trolleys Vasya is going to use.

The third line contains n integers ai (0 ≤ ai ≤ 1000) — the number of times Vasya is going to use the bus number i.

The fourth line contains m integers bi (0 ≤ bi ≤ 1000) — the number of times Vasya is going to use the trolley number i.

Output

Print a single number — the minimum sum of burles Vasya will have to spend on the tickets.

Sample Input

1 3 7 19
2 3
2 5
4 4 4
4 3 2 1
1 3
798
1 2 3
100 100 8 100
3 5
7 94 12
100 1 47 0 42

Sample Output

12
1
16
【解析】
这道题的意思就是说给你四种花费,第一种是能做一次公交i或者电车i,然后是a元价格,第二种是没有限制的坐公交
i或者电车i花费b元,第三种是可以没有限制的选择电车或者是公交车什么编号的车都可以做选择。第四种是什么编
号的电车或者公交都能无限次的坐。叫我们求出最小花费。
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int main(){  int a,b,c,d,i,p;  while(~scanf("%d%d%d%d",&a,&b,&c,&d))  {      int n,m,sum,sum1;      sum=0;      sum1=0;      scanf("%d%d",&n,&m);      for(i=0;i<n;i++)      {          scanf("%d",&p);          sum+=min(a*p,b);//第一种方案和第二种方案比较      }      for(i=0;i<m;i++)      {          scanf("%d",&p);          sum1+=min(a*p,b);//第一种方案和第二种方案比较      }      sum=min(sum,c);//求出和第三种方案比较的最小值      sum1=min(sum1,c);      sum=min(sum+sum1,d);//和最后一个方案比较的最小值      printf("%d\n",sum);  }return 0;}

0 0
原创粉丝点击