Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 13 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
13
Dung lượng
72,84 KB
Nội dung
CÁCH SỬ DỤNG HÀNG ĐỢI ƯU TIÊN (PRIORITY QUEUE) TRONG THƯ VIỆN STL CỦA C++ Chuyên đề trình bày cách khai thác hàng đợi ưu tiên (priority queue) thư viện STL C++ áp dụng vào số toán Tôi viết chuyên đề nhằm mục đích tài liệu tham khảo cho số trường giai đoạn chuyển dạy ngôn ngữ lập trình Free Pascal sang ngôn ngữ C++ Giới thiệu priority_queue: Priority queue loại container adaptor, thiết kế đặc biệt để phần tử đỉnh luôn phần tử có độ ưu tiên lớn so với phần tử khác Nó giống heap, mà heap max, tức phần tử có độ ưu tiên lớn lấy phần tử khác chèn vào Độ ưu tiên sử dụng phép toán thư viện functional tự định nghĩa.Phép toán so sánh mặc định sử dụng priority queue phép toán less Một số phép toán so sánh thư viện functional: equal_to not_equal_to greater less greater_equal less_equal Bằng (==) Không (!=) Lớn (>) Nhỏ (=) Nhỏ ([...]... freopen("Hospital.inp","r",stdin); freopen("Hospital.out","w",stdout); ios::sync_with_stdio(false); Solve(); return 0; } Trên đây là các bài toán được giải bằng cách sử dụng hàng đợi ưu tiên (priority queue) trong thư viện STL của C++ Nhờ ưu điểm là khai báo sử dụng một cách dễ dàng nên lời giải của bài toán ngắn gọn hơn rất nhiều so với lời giải bằng ngôn ngữ lập trình Pascal 13 ... tức là �0và � sẽ tăng dần Các số trên một dòng của input file được ghi cách nhau bởi dấu cách Kết quả: Ghi ra file văn bản HOSPITAL.OUT - Với mỗi bộ dữ liệu: • Dòng đầu tiên ghi “Case #X:” với X là thứ tự bộ dữ liệu bắt đầu từ 1 • Các dòng tiếp theo miêu tả bệnh nhân được đưa vào chữa trị mỗi khi có phòng khám trống yêu cầu, gồm 2 số nguyên là độ nguy kịch của bệnh nhân này tại thời điểm này và tỉ lệ... Để có thêm kinh nghiệm làm việc, TA xin 1 khóa thực tập hè 3 tháng tại bệnh viện thành phố nơi bạn gái anh là TH đang làm việc Khoa cấp cứu nơi anh làm việc hằng ngày có rất nhiều bệnh nhân được đưa tới trong khi số lượng phòng chữa trị có hạn Các bệnh nhân phải đợi khi nào có phòng khám trống thì mới được chữa trị Nhiệm vụ của anh là sắp xếp bệnh nhân có độ nguy kịch cao nhất khi có 1 phòng khám trống... const int MOD = 1000000007; const int NMAX = 10000; const double E = 1e-8; const double PI = acos(-1); typedef long long LL; typedef pair pii; int n,stest; priority_queue H[101];//Khai báo sử dụng 101 prioriry_queue void Solve() { cin >> stest; 12 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 For(test,1,stest) { cin >> n; cout... khi có phòng khám trống Hãy giúp TA xử lý bài toán này nhé Dữ liệu: Vào từ file văn bản HOSPITAL.INP - Dòng đầu là số lượng bộ dữ liệu T (� ≤ 5) Tiếp theo là các bộ test, mỗi bộ test bao gồm: • Dòng đầu tiên là số nguyên dương N (N ≤ 105) là số lượng bệnh nhân đưa vàophòng cấp cứu và số lần có phòng khám trống yêu cầu bệnh nhân • N dòng tiếp theo, mỗi dòng là 1 sự kiện: o Nếu có bệnh nhân chuyển tới khoa... có 1 phòng khám trống Mỗi bệnh nhân khi được đưa vào khoa cấp cứu tại thời điểm �0 có độ nguy kịch ban đầu là �[�0], và tỉ lệ tăng độ nguy kịch theo thời gian là � Khi đó tại thời điểm �, độ nguy kịch của bệnh nhân này là �[�] = �[�0] + � (� – �0) Khi 1 phòng khám trống yêu cầu bệnh nhân vào thời điểm t, TA phải tìm ra bệnh nhân có độ nguy kịch lớn nhất vào thời điểm này, để được điều trị kịp thời ... ios::sync_with_stdio(false); Solve(); return 0; } Trên toán giải cách sử dụng hàng đợi ưu tiên (priority queue) thư viện STL C++ Nhờ ưu điểm khai báo sử dụng cách dễ dàng nên lời giải toán ngắn gọn nhiều so... 5,4,3,2,1(Độ ưu tiên in số lớn nhất, độ ưu tiên mặc định less) Ví dụ 2: Tạo priority_queue có phần tử có giá trị 5,3,2,4,1 với độ ưu tiên greater Hãy in phần tử theo thứ tự độ ưu tiên cao đến... myPriorityQueue ; Khi sử dụng phép toán greater, phần tử độ ưu tiên cao phần tử có giá trị nhỏ 2.3 Khai báo sử dụng class so sánh tự định nghĩa Ta sử dụng struct kết hợp với nạp chồng