Trang chủ Tin Học Lớp 11 Đang là giữa mùa đông và việc đi ra khỏi...

Đang là giữa mùa đông và việc đi ra khỏi nhà là việc vô cùng khó khăn với Bờm. Ngày mai, bạn ấy được giao việc đi thu hoạch nấm trên khu đất nhà mình. Có thể c

Câu hỏi :

Đang là giữa mùa đông và việc đi ra khỏi nhà là việc vô cùng khó khăn với Bờm. Ngày mai, bạn ấy được giao việc đi thu hoạch nấm trên khu đất nhà mình. Có thể coi khu đất có nấm mà Bờm phải thu hoạch là một đoạn thẳng trên trục số. Có n vị trí có nấm, vị trí thứ i ở điểm xi và có ci cây nấm. Vì trời rất lạnh nên Bờm muốn chọn 1 điểm xuất phát để từ đó thu hoạch nấm những điểm có khoảng cách không quá k so với vị trí mà Bờm chọn sao cho tổng số nấm thu được là nhiều nhất có thể. Yêu cầu: Hãy giúp Bờm tính xem tổng số nấm lớn nhất mà Bờm có thể thu hoạch được trong khoảng cách không quá k tính từ vị trí xuất phát mà Bờm đã chọn từ trước.

image

Lời giải 1 :

- Nhận thấy khoảng cách xuất từ một vị trí bất kì không được vượt quá k ⇒ k = 2×k+1

- Thuật toán như sau: Lưu lại tọa độ và số cây nấm vào một mảng, nếu đặt k là một của sổ thì ta sẽ chỉ cần tính tổng của mỗi của sổ có độ dài k, đây gọi là thuật toán sliding window rất phổ biến

- Độ phức tạp: O(max_xi)

- Code:

#include <bits/stdc++.h>
#define ll long long
const int maxn = (int) 1e7;
using namespace std;
int a[maxn];
int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);

    int n, k, max_x, sum = 0, ans = 0; cin >> n >> k;
    memset(a,0,sizeof(a));
    for (int i = 0; i < n; i++){
        int c, x; cin >> c >> x;
        a[x] = c;
        max_x = max(x,max_x);
    }
    k = 2*k+1;
    for (int i = 0; i < k; i++)
        sum += a[i];
    if (k > max_x)
        cout << sum << '\n';
    else{
        for (int i = k; i < max_x+1; i++){
            sum = sum + a[i] - a[i-k];
            ans = max(ans, sum);
        }
        cout << ans << '\n';
    }
    return 0;
}

Thảo luận

Bạn có biết?

Tin học, tiếng Anh: informatics, tiếng Pháp: informatique, là một ngành khoa học chuyên nghiên cứu quá trình tự động hóa việc tổ chức, lưu trữ, xử lý và truyền dẫn thông tin của một hệ thống máy tính cụ thể hoặc trừu tượng (ảo). Với cách hiểu hiện nay, tin học bao hàm tất cả các nghiên cứu và kỹ thuật có liên quan đến việc mô phỏng, biến đổi và tái tạo thông tin.

Nguồn : Wikipedia - Bách khoa toàn thư

Tâm sự 11

Lớp 11 - Năm thứ hai ở cấp trung học phổ thông, gần đến năm cuối cấp nên học tập là nhiệm vụ quan trọng nhất. Nghe nhiều đến định hướng sau này rồi học đại học. Ôi nhiều lúc thật là sợ, hoang mang nhưng các em hãy tự tin và tìm dần điều mà mình muốn là trong tương lai nhé!

Nguồn : ADMIN :))

Liên hệ hợp tác hoặc quảng cáo: gmail

Điều khoản dịch vụ

Copyright © 2021 HOCTAPSGK