thảo luận [Học Tập] Topic thuật toán

  • Người tạo chủ đề Người tạo chủ đề unknowpc90
  • Ngày bắt đầu Ngày bắt đầu
À đại khái là nhiều chỗ gọi cái hàm biến cái array thành heap là heapify, ý em là heapify là quá trình này. Và nó tốn O(n) :byebye:

via theNEXTvoz for iPhone
 
https://codeforces.com/problemset/problem/1672/B
1651830833254.png

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 :cry:
 
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 :(
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 yes
 
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ách này chuẩn này. :p
 
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.

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
Vâng để em đọc lại xem, tồi quá bài 800 mà cũng không nổi :beat_brick::cry:
 
Vâng để em đọc lại xem, tồi quá bài 800 mà cũng không nổi :beat_brick::cry:
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
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.
 
à 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

trướ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 :D
 

Thống kê chủ đề

Ngày tạo
unknowpc90,
Người trả lời cuối
Spaghetti Code,
Trả lời
1.460
Lượt xem
154.039
Quay lại
Lên đầu trang