PTIT125I - Xóa Chữ Số - E16CN PTIT
Có thể bạn quan tâm
E16CN PTIT
Menu E16CN PTIT C++ Phát Triển PTIT SPOJ Stack PTIT125I - Xóa chữ số PTIT125I - Xóa chữ số Thứ Năm, tháng 12 14, 2017 C++ Phát Triển PTIT SPOJ StackLink Sub: http://www.spoj.com/PTIT/problems/PTIT125I/ Người Gửi: Dương Lee
- Problem:
Cho một số có N chữ số. Bạn hãy xóa đi K chữ số để được số còn lại sau khi xóa là lớn nhất có thể. Input - Dòng 1: số N và K (1<=K<N<=500 000). - Dòng 2: Số có N chữ số, bắt đầu bằng số khác 0. Output - Số lớn nhất có thể sau khi xóa K chữ số. Example: Input 4 2 1924 Output: 94 - Solution:
Nhận thấy khi xóa đi mà số vẫn lớn nhất thì mỗi lần xóa một chữ phải tạo ra số lớn nhất. VD: 1924 -> Xóa lần 1 -> 924 max -> Xóa lần 2 -> 94 max. Vậy áp dụng stack để tạo dãy tuyến tính không tăng (khi còn xóa được). Dãy đó luôn là dãy lớn nhất có thể tạo được khi xóa. EX: 170803 (K=3) S: 1 (K=3) S: 7 (K=2 (xóa 1)) S: 7 0 (K=2) S: 8 (K=0 (xóa 7, 0)) S: 8 0 (K=0) S: 8 0 3 (K=0) -> 803 max. - Code:
C++:
https://ideone.com/8ZXdyM#include <iostream> #include <stack> #include <vector> using namespace std; int main () { long N, K; cin>>N>>K; stack <int> S; for (long i=1; i<=N; i++) { char tmp_char; cin>>tmp_char; int tmp_int = tmp_char - '0'; if (S.empty()) { S.push(tmp_int); } else { while (!S.empty() && tmp_int > S.top() && K>0) { S.pop(); K--; } S.push(tmp_int); } } while (K>0 && !S.empty()) { S.pop(); K--; } vector <int> smallest; while (!S.empty()) { int tmp=S.top(); S.pop(); smallest.push_back(tmp); } for (long i=smallest.size()-1; i>=0; i--) cout<<smallest[i]; return 0; }
JAVA:
Author : DL
Share this
Related Posts
Next « Prev Post Previous Next Post » Đăng ký: Đăng Nhận xét (Atom)Status
- Để đảm bảo tốc độ load trang: Web sẽ dùng "text" thay vì sử dụng "embed" cho việc hiển thị code. Điều này dẫn đến việc "có thể cósai sót" trong việc hiển thị code. Vậy nên nếu có lỗi bạn có thể sử dụng "link view" đã đính kèm sẵn và báo lỗi ngay comment.
- Loading... Up/350+ Done/700+ SPOJ PTIT
Tiện Ích
- Yêu Cầu Giải Đáp
- Thắc Mắc, Góp Ý, Báo Lỗi
Giải thuật và Cấu trúc dữ liệu
Toán 84 Xâu 37 Mảng Đánh Dấu 23 Quy Hoạch Động 16 Sắp Xếp 15 Sinh 13 Tham Lam 8 BFS 7 Stack 7 Tìm Kiếm Nhị Phân 6 Đệ Quy 6 Đồ Thị 6 DFS 5 Quay Lui 4 Quy Luật 4 Sàng nguyên tố Eratosthenes 3 Sắp Xếp Nổi Bọt 3 Queue 2 Danh Sách Liên Kết Kép 1 Kruskal 1 Map 1 Nhánh Cận 1 Phân Tập 1Ngôn ngữ
C++ (190) C (23) Python (2) Java (1)Trang luyện tập
- PTIT SPOJ (205)
- VN SPOJ (5)
Bài đăng HOT
- C11PAIRS - Đếm cặp
- PTIT125I - Xóa chữ số
- BCSEQ1 - Đoạn số có tổng bằng nhau
- P157PROE - ROUND 7E - Kim cương
- Bảng quy đổi điểm Tiếng Anh và quy định miễn học, miễn thi, chuyển đổi điểm PTIT
- P161PROA - ROUND 1A - Số gần nguyên tố
- P163SUMI - ROUND 3I - Chữ số thứ n
- PTIT127C - Bố trí phòng họp
Cấp độ
- Luyện Tập (150)
- Phát Triển (40)
- Nhập Môn (20)
Lưu trữ
Lưu trữ tháng 12 2020 (3) tháng 11 2020 (1) tháng 5 2019 (1) tháng 4 2019 (3) tháng 3 2019 (2) tháng 9 2018 (2) tháng 7 2018 (7) tháng 6 2018 (2) tháng 5 2018 (2) tháng 4 2018 (8) tháng 3 2018 (1) tháng 2 2018 (4) tháng 1 2018 (17) tháng 12 2017 (171)Tổng số lượt xem trang
Từ khóa » Xóa K Chữ Số để được Số Lớn Nhất C
-
11070. Xóa Chữ Số | Lập Trình C/C++
-
Xóa N Chữ Số để được Số Lớn Nhất - Programming - Dạy Nhau Học
-
Bài Toán Tạo Số Lớn Nhất: | Cộng đồng Học Sinh Việt Nam
-
Xóa K Chữ Số để được Số Lớn Nhất. - HOCMAI Forum
-
Xóa Một Chữ Số để Thu được Số Lớn Nhất? [Archive] - Diễn Đàn Tin Học
-
Thuật Toán Xoá K Chữ Số để được Dãy Lớn Nhất. - YouTube
-
Xóa Chữ Số - Cộng đồng C Việt
-
Lập Trình C - Cho Một Số Có N Chữ Số. Bạn Hãy Xóa đi K Chữ...
-
Xóa Chữ Số - LQDOJ: Le Quy Don Online Judge
-
[PDF] Xóa Chữ Số - SPOJ
-
Giải Thích Giúp Mình Thuật Toán Của Bài Này Cho Minh Với( Khó Quá)
-
Cho Số 92457813. Hãy Xóa đi Ba Chữ Số để được Số Có Năm ... - Hoc24
-
Cho Số 6789101112 .Hãy Xoá đi 4 Chữ Số Sao Cho Số Còn Lại Làa) Số ...
-
4219183456 .Hãy Xóa đi 5 Chữ Số Trong Số Trên ,giữ Nguyên Thứ Tự ...