Xếp hàng mua vé

Xem PDF

Điểm: 300 (p) Thời gian: 1.0s Bộ nhớ: 640M Input: bàn phím Output: màn hình

\(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 \(t_i\) 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à \(r_i\).

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.

Input

  • Dòng đầu tiên chứa số \(N\) (\(1 \leq N \leq 6 \times 10^4\)).
  • Dòng thứ hai ghi \(N\) số nguyên dương \(t_1, t_2, ..., t_N\). (\(1 \leq t_i \leq 30000\))
  • Dòng thứ ba ghi \(N-1\) số nguyên dương \(r_1, r_2, ..., r_{N-1}\). (\(1 \leq r_i \leq 30000\))

Output

In ra tổng thời gian phục vụ nhỏ nhất.

Example

Test 1

Input
5
2 5 7 8 4
4 9 10 10
Output
18

Test 2

Input
4
5 7 8 4
50 50 50
Output
24

Nguồn: vn.spoj


Bình luận


  • 0
    abcnickname    3:27 p.m. 9 Tháng 10, 2024

    OI OI OI OI
    BAKA BAKA!!!


    • 0
      leanhdung2k10    8:42 a.m. 8 Tháng 10, 2024

      ai cần code c++ thì đây nha very easy

      include<bits/stdc++.h>

      using namespace std;
      long long n,a[10000],i,j,res;
      int main() {
      int N;
      cin >> N;

      int t[60001]; 
      for (int i = 1; i <= N; ++i) {
          cin >> t[i];
      }
      int r[60000]; 
      for (int i = 1; i < N; ++i) {
          cin >> r[i];
      }
      
      int dp[60001]; 
      dp[1] = t[1];
      
      if (N > 1) {
          dp[2] = min(dp[1] + t[2], r[1]); 
      }
      
      
      for (int i = 3; i <= N; ++i) {
          dp[i] = dp[i - 1] + t[i]; 
          int option2 = dp[i - 2] + r[i - 1]; 
          if (option2 < dp[i]) {
              dp[i] = option2; 
          }
      }
      cout << dp[N] << endl;
      
      return 0;
      

      }