#1. Thuật Toán Quy Hoạch Động - Bài Toán Dãy Con Tăng Dài Nhất ( LIS)

  Рет қаралды 127,426

28tech

28tech

Күн бұрын

Пікірлер: 121
@28tech_
@28tech_ 2 жыл бұрын
Practice problem : codeforces.com/problemsets/acmsguru/problem/99999/521 cses.fi/problemset/task/1145 leetcode.com/problems/longest-increasing-subsequence/ leetcode.com/problems/number-of-longest-increasing-subsequence/
@skhuyen6096
@skhuyen6096 2 жыл бұрын
link hackerrank nx a oi
@vietvuong9830
@vietvuong9830 Жыл бұрын
Mình đóng góp code Python cho bạn nào cần thì tham khảo nhé: fi = open('lis.inp','r') fo = open('lis.out','w') n = int(fi.readline()) x = fi.readline().split() A = [int(i) for i in x] L = [1 for i in range(n)] res = 1 for i in range(1,n): for j in range(0,i): if A[i] > A[j]: L[i] = max(L[i],L[j]+1) if L[i] > res: res = L[i] fo.write(str(res)) fi.close() fo.close()
@kiennguyen-th2tg
@kiennguyen-th2tg Жыл бұрын
n=[int(i) for i in input().split()] s=[1]*len(n) for i in range (1,len(n)): for k in range (i): if n[i]>n[k]: s[i]=max(s[i],s[k]+1) print(max(s)) tui ngắn hơn ông nè hehe
@luisdato1712
@luisdato1712 Жыл бұрын
@@kiennguyen-th2tg Mình cũng code giống bạn nhưng khi thử bộ test 11 số [1,2,3,8,9,4,5,6,20,9,10] thì ra kết quả là 7 trong khi đáp án chính xác phải là 8 [1,2,3,4,5,6,9,10]. thật kì lạ
@ngabcasolution5722
@ngabcasolution5722 2 жыл бұрын
Cảm ơn tác giả. rất hữu ích cho các bạn học sinh, sinh viên. Luôn ủng hộ kênh và chia sẻ cho các học trò
@28tech_
@28tech_ 2 жыл бұрын
Em cảm ơn ạ
@trungthanhbp
@trungthanhbp 2 жыл бұрын
có add thêm cái link ở dưới description rất là hữu ích :D
@vietvuong9830
@vietvuong9830 Жыл бұрын
Rất cảm ơn bạn nhé! Hướng dẫn của bạn có ý nghĩa với rất nhiều người. Góp ý nho nhỏ cho video sẽ tốt hơn đó là bạn hạn chế hơn việc nói đế OK vào cuối các câu nói nhé! Thói quen sẽ khó sửa nhưng làm được mà. Trân trọng!
@namlequang4290
@namlequang4290 2 жыл бұрын
Dễ hiểu lắm Anh, hóng phần tiếp theo. Xem các video khác vẫn chưa thông suốt lắm.
@28tech_
@28tech_ 2 жыл бұрын
ok cố gắng lên em :D
@htuanqn
@htuanqn Жыл бұрын
quá hay a ơi, e thấy chuyên đề về QHD dc nhiều người săn đón ở kênh a
@jitan5429
@jitan5429 Жыл бұрын
a ơi cho e hỏi là các công thức của quy hoạch động như này , a làm như nào để nghĩ ra các công thức như này vậy a ? cám ơn a nhiều
@nguyennhunghp
@nguyennhunghp Жыл бұрын
Add cho em xin link LIS độ phức tạp O(nlogn) và có in dãy với ạ. Tks add nhiều
@HungNguyen-ur4dg
@HungNguyen-ur4dg Жыл бұрын
quá tốt luôn..cảm ơn anh đã làm em thông suốt
@28tech_
@28tech_ Жыл бұрын
😆😆😆
@KietNguyen-ee7hv
@KietNguyen-ee7hv 2 жыл бұрын
em ủng hộ series này ạ 😚
@hoangphuc899
@hoangphuc899 Жыл бұрын
cảm ơn, anh dạy kỹ lắm ạ!
@phamtuananh2378
@phamtuananh2378 2 жыл бұрын
a ơi sắp có vid về cách thứ hai có độ phức tạp O(nlogn) chưa ạ
@truongtaman5663
@truongtaman5663 2 жыл бұрын
Cuối cùng cũng có bài toán về qhđ!
@thanhha5251
@thanhha5251 Жыл бұрын
hay qua di em hieu quy hoach dong luon r
@trungkiet2020
@trungkiet2020 2 жыл бұрын
Hay quá anh ơi, đúng cái em đang cần, ủng hộ series này 100% 😁😁
@28tech_
@28tech_ 2 жыл бұрын
@tranquy2547
@tranquy2547 2 жыл бұрын
hay quá anh ơi, cuối cùng cũng tới phần em đau đầu nhất, ủng hộ anh
@namquach73
@namquach73 2 жыл бұрын
dễ hiểu, tận tình, duyệt
@bldouyin4145
@bldouyin4145 2 жыл бұрын
anh giảng rất hay nhưng rất tiếc em não ngắn, sau 1 hồi xem lại thì cuối cùng cũng hiểu bài dãy con tăng hđ ntn rồi:3 cảm ơn anh ạ
@vietvuong9830
@vietvuong9830 Жыл бұрын
Riết rồi cũng hiểu cố lên em!
@hanguyentrong8779
@hanguyentrong8779 2 жыл бұрын
chờ a mãi cuối cùng a cũng ra phần quy hoạch động
@28tech_
@28tech_ 2 жыл бұрын
giờ lo cơm áo gạo tiền thành ra thời gian ko có rảnh như tầm năm ngoái em ạ.
@hanguyentrong8779
@hanguyentrong8779 2 жыл бұрын
@@28tech_ Video a ra chậm nhưng mà chất lượng anh ạ vẫn ủng hộ a dài dài
@vuongthikimhuyen1992
@vuongthikimhuyen1992 9 ай бұрын
Ra video truy vết đi ad ơi. Cảm ơn rất nhiều ạ
@ucphu6269
@ucphu6269 2 жыл бұрын
Anh hướng dẫn xuất ra dãy đó luôn được không ạ
@khangnguyenviet
@khangnguyenviet 2 жыл бұрын
đây dồi đây dồi =)) chúc a sức phẻ để ra nhiều phần về qhđ nữa nhen
@28tech_
@28tech_ 2 жыл бұрын
@traninhtheanh6138
@traninhtheanh6138 2 жыл бұрын
Hay quá anh lộc ơi. Em thích các video về qhđ lắm ạ
@28tech_
@28tech_ 2 жыл бұрын
Ok chúc em học tốt.
@decon.
@decon. 9 ай бұрын
anh ơi có video lý thuyết về thuật toán quy hoạch động không ạ
@KaiChuKo485
@KaiChuKo485 11 ай бұрын
Anh lên video về cách thứ hai có độ phức tạp là O(nlogn) đi ạ
@BDCCN-NguyenVanTuan
@BDCCN-NguyenVanTuan 2 жыл бұрын
a có thể làm video hướng dẫn cách chung để giải quyết mấy bài quy hoạch động này đc k ạ
@28tech_
@28tech_ 2 жыл бұрын
Phương pháp ấy hả hehe.
@sonvuinh2366
@sonvuinh2366 2 жыл бұрын
quá chất lượng, cảm ơn bạn
@plee0577
@plee0577 2 жыл бұрын
hóng mãi, quá đỉnh a ơi :33
@leminhhai5721
@leminhhai5721 2 жыл бұрын
video của anh dễ hiểu quá 😁
@28tech_
@28tech_ 2 жыл бұрын
Thank em 🤟🤟🤟
@khoaptit
@khoaptit Жыл бұрын
Học anh nhiều quá em bị nhiễm chữ ok vào cuối câu nói rồi ạ huhu Hôm trước cô gọi lên giải thích code mà em ok với cô liên tục ạ :)))
@28tech_
@28tech_ Жыл бұрын
Hahaha giờ ảnh bỏ rồi em
@vuongthikimhuyen1992
@vuongthikimhuyen1992 9 ай бұрын
😂
@vuongthikimhuyen1992
@vuongthikimhuyen1992 9 ай бұрын
Đọc bình luận cười đau bụng luôn
@tintrung8372
@tintrung8372 2 жыл бұрын
làm sao để in ra dãy đó ạ
@hatrinh6432
@hatrinh6432 2 жыл бұрын
dãy con tăng dài nhất chưa có video về truy vết và phần cải tiến ah add
@NinWuy
@NinWuy 2 жыл бұрын
Hay quá cuối cùng có series huyền thoại này :)
@28tech_
@28tech_ 2 жыл бұрын
OK em bắt đầu thôi.
@xienkhum9980
@xienkhum9980 Жыл бұрын
Anh có vid cải tiến thuật toán chưa ạ
@VanThanh-cb8uk
@VanThanh-cb8uk Жыл бұрын
3 năm trước có video này thì zui r :vv
@youaresocute2002
@youaresocute2002 2 жыл бұрын
cuối cùng cũng có quy hoạch động rồi hehe
@28tech_
@28tech_ 2 жыл бұрын
🤟
@khavovan8201
@khavovan8201 2 жыл бұрын
Sắp 10k rùi anh ơi🥰🥰🥰🥰
@28tech_
@28tech_ 2 жыл бұрын
Haha, hồi em sub nó mới được có 80 90 sub.
@khavovan8201
@khavovan8201 2 жыл бұрын
@@28tech_ fan cứng mà anh hehe
@tinnhiem8527
@tinnhiem8527 2 жыл бұрын
ra thêm các bài tập CTDL stack queue đi anh
@28tech_
@28tech_ 2 жыл бұрын
Thế thì vô vàn lắm hehe.
@mitvuong1856
@mitvuong1856 11 ай бұрын
sắp có bài lis nlogn chưa a
@28tech_
@28tech_ 11 ай бұрын
Chưa có em ạ
@ngocthaovu
@ngocthaovu 7 ай бұрын
video hay quá ạ
@28tech_
@28tech_ 7 ай бұрын
Cảm ơn em chúc em học tốt nhé
@ngocthaovu
@ngocthaovu 7 ай бұрын
@@28tech_ mong anh ra nhiều video hơn nữa ạ
@funnymeme6981
@funnymeme6981 2 жыл бұрын
làm thế nào để in ra tất cả các dãy con không giảm vậy anh
@miningcraft897
@miningcraft897 Ай бұрын
Anh ơi cho em xin cái bài mà anh làm trong video ấy, ở hackkerrank hay sao ấy ạ
@28tech_
@28tech_ Ай бұрын
Này Ko còn rồi bạn ạ
@miningcraft897
@miningcraft897 Ай бұрын
@@28tech_ Dạ vâng ạ
@miningcraft897
@miningcraft897 Ай бұрын
@@28tech_ Vậy còn mấy bài nào liên quan cũng trên hackerrank ko ạ?
@DaThuFlorida
@DaThuFlorida 6 ай бұрын
Đi thi xài auto, themis có chấm không anh.
@animekay3405
@animekay3405 Ай бұрын
Này o(n)^2 hả a có ý tưởng nào dưới nó k ạ
@thanhbinhnguyen5943
@thanhbinhnguyen5943 2 жыл бұрын
quá hay anh ơi ~~~~
@28tech_
@28tech_ 2 жыл бұрын
🤪🤪🤪🤪
@iluminatibox9949
@iluminatibox9949 11 ай бұрын
thuật toán này là sliding window đúng không nhỉ?
@28tech_
@28tech_ 11 ай бұрын
Ko phải
@kienbuitrung7555
@kienbuitrung7555 Жыл бұрын
#ifndef ONLINE_JUDGE freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout); #endif ios::sync_with_stdio(false); cin.tie(nullptr); mấy cái dòng này là cái dòng gì vậy anh, em thấy ngta lập trình hay gắn như này nên em cx bắt chước theo chứ không thực sự biết tác dụng của nó là gì. Mong anh giải thích vs ạ, vs lại em không biết run code kiểu s khi có mấy dòng này nữa
@mitvuong1856
@mitvuong1856 Жыл бұрын
ios_base::sync_with_stdio(false); Dùng cin/cout bình thường sẽ bất lợi về thời gian do phải đồng bộ với stdin/stdout (vì lí do lịch sử nên phải có đồng bộ này). Gặp bài I/O nhiều phải có câu này, nếu I/O ít thì không đáng kể. cin.tie(0); để ngăn sự đồng bộ giữa cin và cout: chỉ khi cout xuất ra hết thì cin mới nhập vào (và ngược lại). Việc đồng bộ này chỉ có chương trình tương tác mới cần.
@Lunguyen08
@Lunguyen08 Жыл бұрын
Hồi lớp 8 cô dạy để thi hsg tin bài này mà ko hiểu chi hết, bây giờ lên lớp 10 nghe anh giảng mới thông😂😂😂, mà cho em hỏi cài đặt lis vs độ phức tạp là O(nlogn) là video nào vậy anh😢😢😢
@zapdown6116
@zapdown6116 11 ай бұрын
hh trùng hợp v, hồi lp9 mình cx hc thuộc mấy bài qhd này vào phòng thi😂😂😂
@ucNguyen-iv8iu
@ucNguyen-iv8iu 2 жыл бұрын
anh ơi ra vid in dãy ra chưa ạ
@nvnhuquynh4505
@nvnhuquynh4505 11 ай бұрын
có link nộp bài k ạ
@catorlife
@catorlife 10 ай бұрын
cho e hỏi trong CP thì nên xài mảng bình thường hay vector vậy a?
@28tech_
@28tech_ 10 ай бұрын
Em dùng cái nào cũng được, như nhau cả mà
@truongminhnhut4993
@truongminhnhut4993 2 жыл бұрын
Nếu mà làm dãy con giảm thì sao vậy ad
@ahardworkingbee
@ahardworkingbee 2 жыл бұрын
Dễ quá bạn ei ^^
@phamhonganh3708
@phamhonganh3708 2 жыл бұрын
anh cho em xin link bài này trên hackerrank đc ko ạ
@thuanmevan5683
@thuanmevan5683 2 жыл бұрын
Anh nói to hơn ạ, em mong anh
@truongtra1183
@truongtra1183 2 жыл бұрын
Nếu họ ko ra đề là 'dãy con liên tiếp ' thì mình tìm các phần tử cách nhau đúng ko ạ ?
@nhndO_o
@nhndO_o 2 жыл бұрын
anh làm phần truy vết đi ạ
@thiemhoang3015
@thiemhoang3015 2 жыл бұрын
làm sao để in cả dãy ra vậy anh
@tienato2042
@tienato2042 Жыл бұрын
có phần giải bài này cho java không ạ
@28tech_
@28tech_ Жыл бұрын
Jca em code tương tự thôi
@cuongnguyenmanh5251
@cuongnguyenmanh5251 Жыл бұрын
Làm sao để nó hiện tiếng Việt như thế kia vậy anh ơi?
@ducmih2203
@ducmih2203 Жыл бұрын
bài này dùng lower_bound nhanh hơn anh ạ
@quyle2185
@quyle2185 2 жыл бұрын
Ok nha anh
@hoangdev2305
@hoangdev2305 2 жыл бұрын
với n = 10^5 thì có thuật toán nào tối ưu k ạ
@28tech_
@28tech_ 2 жыл бұрын
Có em nhé có thể kết hợp binary search, đợi video sau nhé
@datgameon2656
@datgameon2656 Жыл бұрын
a ơi, cải tiến thuật toán đc ko a :))
@AnNguyen-mf7zb
@AnNguyen-mf7zb 6 ай бұрын
ko có phần truy vết à anh
@NguyễnLong-o1t
@NguyễnLong-o1t 7 ай бұрын
em cảm ơn anh
@luukhai3886
@luukhai3886 Жыл бұрын
thay vì cho L[i] = max(L[i], L[j] + 1) thì sao mình không cho L[i]++ luôn nhỉ? cũng là xét a[i] > a[j] mà int main() { int n; cin >> n; vector arr(n); for (int i = 0; i < n; i++) cin >> arr[i]; vector L(n,1); int max_val = 0; for (int i = 1; i arr[j]) L[i] ++; } max_val = max(max_val, L[i]); } cout
@IamNix
@IamNix Жыл бұрын
ChatGPT: The line L[i] = max(L[i], L[j] + 1) is used to update the length of the longest increasing subsequence that ends at index i. The reason for using max(L[i], L[j] + 1) instead of just L[j] + 1 is that there may be multiple increasing subsequences that could potentially end at index i, and we want to choose the one that results in the longest overall subsequence. Consider the following input array: Copy code 3 4 1 5 2 Initially, the array L is set to all ones: Copy code 1 1 1 1 1 When we process arr[2] (which is 1), we compare it to all previous elements in the array to see if it could be part of a longer increasing subsequence. In this case, it cannot be part of any increasing subsequence longer than 1, because it is smaller than all previous elements. So L[2] remains at 1. When we process arr[3] (which is 5), we compare it to all previous elements in the array to see if it could be part of a longer increasing subsequence. It is larger than arr[0], arr[1], and arr[2], so it can be part of a longer increasing subsequence. In this case, the longest increasing subsequence that ends at index 3 is {3, 4, 5}. To update L[3], we add 1 to the length of the longest increasing subsequence that ends at j=1 (which is {3, 4}), since arr[3] is larger than arr[1]. We get L[3] = L[1] + 1 = 2. When we process arr[4] (which is 2), we compare it to all previous elements in the array to see if it could be part of a longer increasing subsequence. It is smaller than arr[0], arr[1], arr[2], and arr[3], so it cannot be part of any increasing subsequence longer than 1. So L[4] remains at 1. The resulting L array is: Copy code 1 1 1 2 1 The length of the longest increasing subsequence is 2, which is correctly found by the algorithm. If we had used L[i] = L[j] + 1 instead of L[i] = max(L[i], L[j] + 1), we would have missed the longer subsequence {3, 4, 5} and incorrectly calculated the LIS to be 1.
@luukhai3886
@luukhai3886 Жыл бұрын
@@IamNix tóm lại giải thích bằng tiếng việt đi
@IamNix
@IamNix Жыл бұрын
@@luukhai3886 là bạn hiểu sai vấn đề. Nếu làm như vậy. Bạn luôn giả định phần tử áp chót luôn được chọn.
@itnhalam
@itnhalam 2 жыл бұрын
anh ơi có phần giảm độ phức tạp của bài này chưa ạ
@28tech_
@28tech_ 2 жыл бұрын
chưa có em ơi.
@vietnamesegeneral7793
@vietnamesegeneral7793 2 жыл бұрын
chặt nhị phân
@NMnhSon
@NMnhSon 2 ай бұрын
viết code mà không chuyển unikey là sao??
@28tech_
@28tech_ 2 ай бұрын
@@NMnhSon nó là quyền của mình, bạn có quyền gì bảo mình phỉ chuyển hay ko?
@KienNguyen-mo3we
@KienNguyen-mo3we 2 жыл бұрын
tym đầu ạ
@28tech_
@28tech_ 2 жыл бұрын
😁😁😁
@kuripuri4670
@kuripuri4670 2 жыл бұрын
Mình chx hiểu tại sao L[i]=max(L[i],L[j]+1), ai đó vô thông não cái
@hoangduonghn
@hoangduonghn 2 жыл бұрын
trời ơi, cứ ô kê, ô kê, khó học quá
@28tech_
@28tech_ 2 жыл бұрын
Oke em có thể sang kênh khác học nha
@hoangduonghn
@hoangduonghn 2 жыл бұрын
@@28tech_ Vầng anh Xin lỗi anh, em không có ý chê bài giảng cảu anh, vì em mới đang tập tành, đó có thể là do vấn đề tâm lý của em, việc lặp từ quá gây rối loạn tiếp thu, nhưng nó cũng là một vấn đề của anh
@evuongnguyen5281
@evuongnguyen5281 Жыл бұрын
khó hiểu quá
@anhung9351
@anhung9351 2 жыл бұрын
:)))
@28tech_
@28tech_ 2 жыл бұрын
@nxsang1611
@nxsang1611 10 ай бұрын
Lsao để in dãy con đó ra v ạ
Try this prank with your friends 😂 @karina-kola
00:18
Andrey Grechka
Рет қаралды 9 МЛН
小丑女COCO的审判。#天使 #小丑 #超人不会飞
00:53
超人不会飞
Рет қаралды 16 МЛН
Beat Ronaldo, Win $1,000,000
22:45
MrBeast
Рет қаралды 158 МЛН
СИНИЙ ИНЕЙ УЖЕ ВЫШЕЛ!❄️
01:01
DO$HIK
Рет қаралды 3,3 МЛН
Bài toán tìm dãy con tổng chia hết cho k
26:08
CVA TV
Рет қаралды 6 М.
Tỷ phú Mỹ cao tay như nào khi kiện Đàm Vĩnh Hưng.
10:05
Tuấn Tiền Tỉ
Рет қаралды 295 М.
Try this prank with your friends 😂 @karina-kola
00:18
Andrey Grechka
Рет қаралды 9 МЛН