Chuyên đề HIỆU QUẢ sử DỤNG cấu TRÚC INTERVAL TREE

25 467 3
Chuyên đề HIỆU QUẢ sử DỤNG cấu TRÚC INTERVAL TREE

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

08/2015 HIỆU QUẢ SỬ DỤNG CẤU TRÚC INTERVAL TREE HIỆU QUẢ SỬ DỤNG CẤU TRÚC INTERVAL TREE I.Đặt vấn đề Các toán dãy số xuất nhiều đề thi olympic tin học quốc gia quốc tế, Có nhiều cấu trúc lưu trữ sử dụng để xử lý toán dạng này, Theo tìm hiểu cá nhân cấu trúc lưu trữ hiệu với thao tác xử lý tốn thời gian cấu trúc khác INTERVAL TREE (Cây đoạn) Cây đoạn công cụ hữu dụng sử dụng nhiều toán dãy số, quy toán xử lý dãy số, đặc biệt toán có nhiều công việc cần xử lí nhiều truy vấn xen kẻ Chính vậy, Tôi viết chuyên đề nhằm làm rõ mức độ hiệu sử dụng cấu trúc interval tree thông qua số tập áp dụng cấu trúc để giải II.Nội dung 1.Lý thuyết tảng Cây phân đoạn cây, nút lưu thông tin đoạn xác định Interval tree nhị phân mà nút có nút Nếu nút A lưu thông tin đoạn từ i j nút nó, A1 A2 lưu thông tin đoạn i m m+1 j, với m=(i+j) div phần tử đoạn Vì đầy nhị phân, lại có đầy đủ nút con, để đơn giản ta biễu diễn mảng chiều với ý nghĩa sau: Nút nút gốc, nút k( nút lá) có nút k*2 ( nút trái) k*2+1(nút phải) Nút lưu thông tin đoạn n ( với n độ dài dãy số) Vậy nút lưu thông tin đoạn (n+1) div nút lưu thông tin đoạn (n+1)div +1 n Tương tự theo định nghĩa ta biết nút thứ k lưu thông tin đoạn xác định Sau hình ảnh INTERVAL TREE với n =7: 08/2015 HIỆU QUẢ SỬ DỤNG CẤU TRÚC INTERVAL TREE Có vấn đề với đoạn n phần tử mảng biễu diễn có phẩn tử đủ, người ta chứng minh interval tree cần tối đa 4*n-5 phần tử, khai báo interval tree ta thường khai báo mảng 4*n Trên interval tree có thao tác cần xử lý: cập nhật thay đổi cho đoạn i j lấy thông tin cần có đoạn i j, nút interval trê lưu đoạn xác định, thao tác cần tác động đến nhiều nút Để dễ hình dung, ta lấy ví dụ cụ thể: Cho dãy n phần tử (n=i và điểm cuối i hoặc r T[k]:=max(T[k*2],T[k*2+1]) Khi gọi thủ tục truy vấn 1, ta sẽ gọi từ nút gốc, tức là gọi truyvan1(l,l,n,i); Vậy là đã xong yêu cầu thứ nhất, cái ta cần để xem chương trình có hoạt động tốt hay không lại là kết quả của yêu cầu thứ 2, vì vậy thủ tục truyvan1 là để giúp thủ tục truyvan2 sau để tìm được kết quả với đoạn i j bất kì, 08/2015 HIỆU QUẢ SỬ DỤNG CẤU TRÚC INTERVAL TREE Procedure truyvan2(k,l,r,i,j:longint); Var m: longint Begin if (l>j) or (r[...]... trung khai thác và làm rõ cấu trúc interval tree để giải quyết một số bài toán trên dãy số Chuyên đề giúp người đọc nắm được cấu trúc interval tree, cài đặt một interval tree cơ bản và vận dụng vào giải các bài toán khác nhau có thể quy về dạng phân đoạn Thông qua các bài tập minh họa có định hướng cách giải, hi vọng sẽ giúp bạn đọc có thể vận dụng linh hoạt cấu trúc interval tree cho những bài toán... trả lời nằm ở chú ý thứ nhất: tất cả 14 08/2015 HIỆU QUẢ SỬ DỤNG CẤU TRÚC INTERVAL TREE các hình chữ nhật có chung hoành độ, bất kể là đỉnh trên trái hay dưới phải đều được xét hết trước khi diện tích được cộng chính thức vào tổng Loại cây mà chúng ta vừa sử dụng được gọi là Interval Tree Vậy, Interval Tree là gì? Có thể nói vắn tắt lại rằng Interval Tree thực chất là một loại cây nhị phân đầy đủ với... nhật, và kết quả chính là d*n Các bạn cũng cần chú ý những trường hợp mà số ô đưa vào nhiều hơn số ô tối đa có thể đưa vào hàng/cột, lúc này ta chỉ kết quả cho những ô đưa được vào bảng thôi( 1 số ô bị bắn ra ngay khi gặp chướng ngại vật ở biên) Bài này các bạn nên khai báo kết quả kiểu int64 để tránh bị tràn số 23 08/2015 HIỆU QUẢ SỬ DỤNG CẤU TRÚC INTERVAL TREE III.Kết luận Nội dung chuyên để tập... nút i quản lí thì nếu gặp b[i]=true phải tiến hành sửa sl[i], sl[i] hiện tại là giá trị của số đèn đang tắt( do khi thay đổi trạng thái thì bật chuyển thành tắt) Vậy chỉ cần 1 phép trừ là có thể tính được số lượng đèn đang bật trong đoạn Các công việc này cần làm ở đầu ở cả 2 thủ tục cập nhật và lấy kết quả 20 08/2015 HIỆU QUẢ SỬ DỤNG CẤU TRÚC INTERVAL TREE Khi thực hiện thao tác cập nhật kết quả cho... https://sites.google.com/site/kc97ble/container/segmenttree-cpp 5 http://blogthuattoan.blogspot.com/2014/06 /interval- tree. html 24 08/2015 HIỆU QUẢ SỬ DỤNG CẤU TRÚC INTERVAL TREE Mục lục I.Đặt vấn đề .1 II.Nội dung 1 1.Lý thuyết nền tảng 1 2.Bài tập ứng dụng 5 Bài toán 1: Dãy con tăng dài nhất 5 Bài tập 2: Tính diện tích hình chữ... 0464 116 Output: 4 18 08/2015 HIỆU QUẢ SỬ DỤNG CẤU TRÚC INTERVAL TREE Thuật toán: Bài này khác bài QMAX ở trên là các phép biến đổi và các câu hỏi xen kẽ nhau, vì vậy ta không thể tạo trước 1 cây interval được Để giải quyết bài toán này, ta cần phải thực hiện cập nhật cũng như lấy kết quả xen kẽ nhau Nhưng ở đây thì các công việc này không hề đơn giản Vừa có được kết quả, ta cũng cần phải đảm bảo 2... dùng 2 cây interval tree, 1 cây dùng để lưu giá trị lớn nhất, cây còn lại là giá trị nhỏ nhất Ở đây ta gọi 2 cây này là maxd và mind phần tạo ta có thể làm rất đơn giản dựa trên ý tưởng sau: Nếu l=r thì Maxd[k]=Mind[k]=A[l]; Nếu không thì Maxd[k]=max(Maxd[k*2], Maxd[k*2+1]) và Mind[k]:=min(Mind[k*2],Mind[k*2+1]; 16 08/2015 HIỆU QUẢ SỬ DỤNG CẤU TRÚC INTERVAL TREE Khi muốn... Cover[k] := Cover[2*k] + Cover[2*k+1]; End; Để tiện cho việc lưu trữ, Interval Tree của chúng ta sẽ được lưu trữ bằng mảng, đỉnh i có 2 con là 2*i và 2*i+1 Phần khó nhất là việc xây dựng cây đã xong, chương trình xử lý của chúng ta sẽ bao gồm sắp xếp theo H và xét các khe H1H2, H2H3, …, H2*N-1H2*N: 13 08/2015 HIỆU QUẢ SỬ DỤNG CẤU TRÚC INTERVAL TREE Procedure Solve; begin Sort; {Sắp xếp dãy} Open_True(Min,... khảo 1 Một số vấn đề đáng chú ý trong tin học_ Nhóm tác giả ( Phan Công Minh, Hồ Sỹ Việt Anh, Ngô Văn Hoàng, Bùi Minh Trí, Nguyễn Cảnh Toàn) 2 Chuyên Đề: Cách sử dụng interval tree, binary indexed tree qua một số bài toán quy hoạch động_Lê Thanh Bình_Trường THPT Chuyên Nguyễn Trãi _ Hải Dương 3 http://codeforces.com/blog/entry/3327 4 https://sites.google.com/site/kc97ble/container/segmenttree-cpp 5 http://blogthuattoan.blogspot.com/2014/06 /interval- tree. html... cao giữ con bò thấp nhất và cao nhất thuộc đoạn tương ứng Ví dụ 15 08/2015 HIỆU QUẢ SỬ DỤNG CẤU TRÚC INTERVAL TREE Dữ liệu: 63 1 7 3 4 2 5 15 46 22 Kết quả 6 3 0 Thuật toán: Đây là 1 bài toán xử lí trên dãy số và cần truy cập đến những đoạn A B bất kì trong dãy, vì vậy interval tree là 1 trong những lựa chọn không tồi Bài này chúng ta có 1 điều may mắn ... 08/2015 HIỆU QUẢ SỬ DỤNG CẤU TRÚC INTERVAL TREE III.Kết luận Nội dung chuyên để tập trung khai thác làm rõ cấu trúc interval tree để giải số toán dãy số Chuyên đề giúp người đọc nắm cấu trúc interval. .. 08/2015 HIỆU QUẢ SỬ DỤNG CẤU TRÚC INTERVAL TREE Output: COVER.OUT • Gồm dòng đáp số toán Thời gian chạy: 0.5s Ví dụ: COVER.INP COVER.OUT 28 -2 -1 6 Minh họa: 08/2015 HIỆU QUẢ SỬ DỤNG CẤU TRÚC INTERVAL. .. 08/2015 HIỆU QUẢ SỬ DỤNG CẤU TRÚC INTERVAL TREE hình chữ nhật có chung hoành độ, đỉnh trái hay phải xét hết trước diện tích cộng thức vào tổng Loại mà vừa sử dụng gọi Interval Tree Vậy, Interval Tree

Ngày đăng: 19/01/2016, 19:05

Từ khóa liên quan

Mục lục

  • I.Đặt vấn đề

  • II.Nội dung

    • 1.Lý thuyết nền tảng

    • 2.Bài tập ứng dụng

      • Bài toán 1: Dãy con tăng dài nhất

      • Bài tập 2: Tính diện tích hình chữ nhật phủ

      • Bài tập 3: Xếp hàng(NKLINEUP)

      • Bài tập 4: Giá trị lớn nhất(QMAX)

      • Bài tập 5: Giá trị lớn nhất ver2(QMAX2)

      • Bài tập 7: A Marble Game(MARBLE)

      • III.Kết luận

      • IV. Tài liệu tham khảo

      • Mục lục

Tài liệu cùng người dùng

Tài liệu liên quan