Tập Làm Coder
Member
à nhầm, build mất O(N),như tui dùng duyệt tìm max từng cái là xong cũng O(N) ko mệt build pq làm gìKhong thay ai sai priority queue nhi?![]()
à nhầm, build mất O(N),như tui dùng duyệt tìm max từng cái là xong cũng O(N) ko mệt build pq làm gìKhong thay ai sai priority queue nhi?![]()
Pq 2 phần tử, bác dùng làm j, pq thì mỗi vòng lặp là log(2) cho lần push và log(3) cho lần pop, dùng 2 biến thì nó cũng thếKhong thay ai sai priority queue nhi?![]()
Heapify chỉ O(n) thôi bácbuild O(n) sao bác nhỉ, chạy tuần tự mảng, mỗi phần tử cho vào pq phải là O(nlogn) chứ
heapify: log(n)



Không phải bắt đầu bằng A, kết thúc bằng B. Mà toàn bộ là A trừ chữ cái cuối cùng là B.https://codeforces.com/problemset/problem/1672/B
Xem tệp đính kèm 1145506
Bác nào hiểu đề bài này không? Theo em hiểu good string phải bắt đầu bằng A và kết thúc bằng B mà làm hoài toàn sai![]()
AABBABAAAABABABAABABKhông phải bắt đầu bằng A, kết thúc bằng B. Mà toàn bộ là A trừ chữ cái cuối cùng là B.

Cái này dễ hiểu mà. Cái đầu tiên thì là do chèn AB vào giữa AB thì sẽ đc AABB. Còn cái thứ 2 thì B không phải là good string. Nên không thể lấy B chèn vào AB hoặc ngược lại.AABBABAAAABABABAABAB
Vậy sao test case này nó lại YES được bác nhỉ
Mà test case này lại sai
ABB
Em vẫn chưa hiểu lắm![]()
Bác đọc kĩ đề, goodstring nhỏ nhất là AB, tiếp theo là AAB, AAAB, AAAAB,…. Vì các goodstring đều có tối đa 1 B và tối thiểu 1 A, nên khi ghép vào thì đằng trước các vị trí B phải tồn tại A. Làm 1 cái biến đếm A đặt là cnt, khi gặp B nếu cnt>0 thì trừ đi 1. Nếu bằng 0 thì in ra No. Duyệt hết dãy mà chưa vi phạm thì in yesAABBABAAAABABABAABAB
Vậy sao test case này nó lại YES được bác nhỉ
Mà test case này lại sai
ABB
Em vẫn chưa hiểu lắm![]()
Cách này chuẩn này.Bác đọc kĩ đề, goodstring nhỏ nhất là AB, tiếp theo là AAB, AAAB, AAAAB,…. Vì các goodstring đều có tối đa 1 B và tối thiểu 1 A, nên khi ghép vào thì đằng trước các vị trí B phải tồn tại A. Làm 1 cái biến đếm A đặt là cnt, khi gặp B nếu cnt>0 thì trừ đi 1. Nếu bằng 0 thì in ra No. Duyệt hết dãy mà chưa vi phạm thì in yes

Bài này theo t thì dùng stack. Nó khá giống bài https://leetcode.com/problems/valid-parentheses/. Nhưng nó khó hơn 1 xíu chỗ xử lý thằng A thôi.
Vâng để em đọc lại xem, tồi quá bài 800 mà cũng không nổiBác đọc kĩ đề, goodstring nhỏ nhất là AB, tiếp theo là AAB, AAAB, AAAAB,…. Vì các goodstring đều có tối đa 1 B và tối thiểu 1 A, nên khi ghép vào thì đằng trước các vị trí B phải tồn tại A. Làm 1 cái biến đếm A đặt là cnt, khi gặp B nếu cnt>0 thì trừ đi 1. Nếu bằng 0 thì in ra No. Duyệt hết dãy mà chưa vi phạm thì in yes


Cách này chuẩn này.Vâng để em đọc lại xem, tồi quá bài 800 mà cũng không nổi![]()
Dùng stack như t nói hơi quá. K cần đến đâu. Vì bản chất nó chỉ cần lưu mỗi thằng A thôi mà. Nên count là đủ rồi.Bác đọc kĩ đề, goodstring nhỏ nhất là AB, tiếp theo là AAB, AAAB, AAAAB,…. Vì các goodstring đều có tối đa 1 B và tối thiểu 1 A, nên khi ghép vào thì đằng trước các vị trí B phải tồn tại A. Làm 1 cái biến đếm A đặt là cnt, khi gặp B nếu cnt>0 thì trừ đi 1. Nếu bằng 0 thì in ra No. Duyệt hết dãy mà chưa vi phạm thì in yes
Chech cái này đầu tiên. Phần tử cuối lúc nào cũng phải = B. Rồi sau đó làm y như trên.à quên còn corner case, ví dụ A, hoặc AA cũng không thoả. Vì vậy cần check phần tử cuối, bắt buộc phải bằng B

Bác đọc kĩ đề, goodstring nhỏ nhất là AB, tiếp theo là AAB, AAAB, AAAAB,…. Vì các goodstring đều có tối đa 1 B và tối thiểu 1 A, nên khi ghép vào thì đằng trước các vị trí B phải tồn tại A. Làm 1 cái biến đếm A đặt là cnt, khi gặp B nếu cnt>0 thì trừ đi 1. Nếu bằng 0 thì in ra No. Duyệt hết dãy mà chưa vi phạm thì in yes

Đọc kỹ lại đề đi bạntrước B phải tồn tại A thì xét s[i ] == s[i-1] == B thì No luôn chứ count A chi nữa![]()