2299. Xếp hàng mua vé
Mã bài: NKTICK
Có N người sắp hàng mua vé dự buổi hoà nhạc. Ta đánh số họ từ 1 đến N theo thứ tự đứng trong hàng.
Mỗi người cần mua một vé, song người bán vé được phép bán cho mỗi người tối đa hai vé.
Vì thế, một số người có thể rời hàng và nhờ người đứng trước mình mua hộ vé.
Biết ti là thời gian cần thiết để người i mua xong vé cho mình. Nếu người i+1 rời khỏi hàng và nhờ người i mua hộ vé
thì thời gian để người thứ i mua được vé cho cả hai người là ri.
Yêu cầu: Xác định xem những người nào cần rời khỏi hàng và nhờ người đứng trước mua hộ vé để tổng thời gian phục vụ bán vé là nhỏ nhất.
Dữ liệu
Dòng đầu tiên chứa số N (1 ≤ N ≤ 60000).
Dòng thứ 2 ghi N số nguyên dương t1, t2, ..., tN. (1 ≤ ti ≤ 30000)
Dòng thứ ba ghi N-1 số nguyên dương r1, r2, ..., rN-1. (1 ≤ ri ≤ 30000)
Kết qủa
In ra tổng thời gian phục vụ nhỏ nhất.
Ví dụ
Dữ liệu:
5
2 5 7 8 4
4 9 10 10
Kết qủa
18
Dữ liệu:
4
5 7 8 4
50 50 50
Kết qủa
24
__________________________________________
#include<iostream>
//#include<stdio.h>
using namespace std;
int t[60010];
int r[60010];
int F[60010];
long long MIN(long long a,long long b)
{
return (a<b)?a:b;
}
int main()
{
int n;
// freopen("in.txt","r",stdin);
cin>>n;
for ( int i = 1; i<=n; i++)
cin>>t[i];
for ( int i = 1; i<=n; i++)
cin>>r[i];
F[n]= t[n];
F[n+1] =0;
for (int i = n-1; i>=1;i--)
{
long long th1 = F[i+1]+ t[i];
long long th2 = F[i+2] + r[i];
F[i] = MIN(th1,th2);
}
cout<<F[1];
}