[DSA T4 2024]. TEST 5. THUẬT TOÁN SINH, BINARY SEARCH ON ANSWER
[Thuật Toán Sinh]. Bài 31. Tổng các tập con
Nộp bàiPoint: 1
Cho mảng A[] gồm N phần tử, bạn hãy liệt kê tất cả các tổng khác nhau của các tập con khác rỗng của mảng A[].
Ví dụ A[] = {1, 2, 3} có thể tạo thành các tổng 1, 2, 3, 4, 5, 6
Đầu vào
Dòng đầu tiên là số N
Dòng 2 gồm N số trong mảng A[]
Giới hạn
1<=N<=20
1<=A[i]<=10^9
Đầu ra
In ra các tổng khác nhau theo thứ tự tăng dần
Ví dụ :
Input 01
3
1 3 5
Output 01
1 3 4 5 6 8 9
[Thuật Toán Sinh]. Bài 32. Cụm từ bí mật passphrase
Nộp bàiPoint: 1
Passphrase là cụm từ bí mật được sử dụng trong các ví tiền điện tử hiện nay, biết được cụm từ bí mật của 1 ví tiền điện tử thì bạn có thể lấy tất cả tiền điện tử trong ví này. Hiện nay có các bạn trẻ Việt Nam bán tool dò Passphrase, họ sẽ sinh ra 12 từ ngẫu nhiên từ 2048 từ trong bộ từ BIP39.
Bây giờ 28tech muốn bạn triển khai 1 tool dò Passphrase, bạn hãy sinh ra tất cả các bộ cụm từ gồm 6 từ ngẫu nhiên từ N từ cho trước. Bạn cần liệt kê các cụm Passphrase theo thứ tự từ điển tăng dần
Đầu vào
Dòng đầu tiên là số N
Dòng 2 gồm N từ trong bộ từ BIP39
Giới hạn
1<=N<=10
Đầu ra
In ra các cụm Passphrase tạo được
Ví dụ :
Input 01
2
badge cart
Output 01
badge badge badge badge badge badge
badge badge badge badge badge cart
badge badge badge badge cart badge
badge badge badge badge cart cart
badge badge badge cart badge badge
badge badge badge cart badge cart
badge badge badge cart cart badge
badge badge badge cart cart cart
badge badge cart badge badge badge
badge badge cart badge badge cart
badge badge cart badge cart badge
badge badge cart badge cart cart
badge badge cart cart badge badge
badge badge cart cart badge cart
badge badge cart cart cart badge
badge badge cart cart cart cart
badge cart badge badge badge badge
badge cart badge badge badge cart
badge cart badge badge cart badge
badge cart badge badge cart cart
badge cart badge cart badge badge
badge cart badge cart badge cart
badge cart badge cart cart badge
badge cart badge cart cart cart
badge cart cart badge badge badge
badge cart cart badge badge cart
badge cart cart badge cart badge
badge cart cart badge cart cart
badge cart cart cart badge badge
badge cart cart cart badge cart
badge cart cart cart cart badge
badge cart cart cart cart cart
cart badge badge badge badge badge
cart badge badge badge badge cart
cart badge badge badge cart badge
cart badge badge badge cart cart
cart badge badge cart badge badge
cart badge badge cart badge cart
cart badge badge cart cart badge
cart badge badge cart cart cart
cart badge cart badge badge badge
cart badge cart badge badge cart
cart badge cart badge cart badge
cart badge cart badge cart cart
cart badge cart cart badge badge
cart badge cart cart badge cart
cart badge cart cart cart badge
cart badge cart cart cart cart
cart cart badge badge badge badge
cart cart badge badge badge cart
cart cart badge badge cart badge
cart cart badge badge cart cart
cart cart badge cart badge badge
cart cart badge cart badge cart
cart cart badge cart cart badge
cart cart badge cart cart cart
cart cart cart badge badge badge
cart cart cart badge badge cart
cart cart cart badge cart badge
cart cart cart badge cart cart
cart cart cart cart badge badge
cart cart cart cart badge cart
cart cart cart cart cart badge
cart cart cart cart cart cart
[Thuật Toán Sinh]. Bài 33. Địa chỉ ví điện tử
Nộp bàiPoint: 1
28tech đang muốn phát triển đồng tiền điện tử là 28coin, anh ta cần tạo ra các địa chỉ ví để gửi và nhận đồng tiền này. Mỗi địa chỉ ví là sự kết hợp của hoán vị các chữ cái từ 'a' tới X với X là chữ cái in thường cho trước với các tổ hợp chập K của N phần tử các số nguyên từ 1 tới N.
Nhiệm vụ của bạn là hãy liệt kê tất cả các địa chỉ có thể có.
Đầu vào
Dòng duy nhất chứa 2 số N, K và kí tự X
Giới hạn
1<=K<=N<=15
Đầu ra
In ra các địa chỉ ví
Ví dụ :
Input 01
5 3 c
Output 01
abc123
abc124
abc125
abc134
abc135
abc145
abc234
abc235
abc245
abc345
acb123
acb124
acb125
acb134
acb135
acb145
acb234
acb235
acb245
acb345
bac123
bac124
bac125
bac134
bac135
bac145
bac234
bac235
bac245
bac345
bca123
bca124
bca125
bca134
bca135
bca145
bca234
bca235
bca245
bca345
cab123
cab124
cab125
cab134
cab135
cab145
cab234
cab235
cab245
cab345
cba123
cba124
cba125
cba134
cba135
cba145
cba234
cba235
cba245
cba345
[Sắp Xếp - Tìm Kiếm]. Bài 53. Chặt cây xây nhà
Nộp bàiPoint: 1
Bob là một thợ mộc tài hoa. Hiện tại anh đang có kế hoạch xây dựng một căn nhà toàn bộ bằng gỗ. Biệt thự được xây bởi các khúc gỗ khác nhau và tổng độ dài của các thanh gỗ là L.
Để lấy các khúc gỗ đó, anh ấy cần vào rừng và chặt cây. Khu rừng gần chỗ anh có N cây với độ cao khác nhau. Bob sẽ dùng một cái máy cưa đặc biệt, nó có thể cắt một lượt qua tất cả các cây.
Đầu tiên, anh ấy sẽ chọn một độ cao cố định là H, sau đó dùng máy cưa đặc biệt để cắt một đường theo độ cao H này trên các cây có độ cao lớn H.
Ví dụ : các cây có độ cao lần lượt là: 10,16,17,15. Chọn H bằng 15. Do đó, cây thứ 2,3 sẽ được cắt và tổng độ dài các khúc gỗ thu được là 1+2=3. Cho độ cao của các cây trong rừng và giá trị L. (Tổng độ dài của các khúc gỗ cần).
Hãy giúp Bob tìm giá trị lớn nhất của H thỏa mãn rằng Bob chỉ cần dùng máy cắt đúng một lượt để thu được số các khúc gỗ cần thiết.
Chú ý : Tổng độ dài các khúc gỗ có thỏa mãn có thể lớn hơn L (hay nói cách khác L ≤ tổng độ dài).
Đầu vào
Dòng đầu tiên chứa một số nguyên mô tả số lượng cây N (1≤N≤10^6) và L là tổng độ dài của các khúc gỗ cần dùng (1≤L≤2∗10^9
Dòng tiếp theo chứa N số tự nhiên h[i] là độ cao tương ứng của các cây (h[i]<10^9). Tổng độ cao của các cây lớn hơn hoặc bằng L.
Giới hạn
N/A
Đầu ra
Một số nguyên duy nhất: giá trị độ cao lớn nhất mà tại đó Bob cắt đúng một đường đề thu được các khúc gỗ thỏa mãn.
Ví dụ :
Input 01
3 6
1 2 3
Output 01
0
Input 02
4 10
10 15 12 13
Output 02
10
Input 03
4 1
5 5 5 5
Output 03
4
[Sắp Xếp - Tìm Kiếm]. Bài 51. Đếm cặp
Nộp bàiPoint: 1
Cho mảng A[] có N phần tử, mảng B[] có M phần tử. Gọi a là những phần tử thuộc mảng A[], b là những phần tử thuộc mảng B[], nhiệm vụ của bạn là hãy đếm số cặp (a, b) thỏa mãn a^b > b^a.
Ví dụ A = [3, 9, 7, 2] và B = [2, 5] thì có những cặp thỏa mãn là (3, 2), (3, 5), (2, 5)
Gợi ý : a^b > b^a nếu a < b, ví dụ a = 2, và b = 5 thì 2^5 = 32 > 5^2 = 25. Có 1 vài ngoại lệ là cặp (a, b) = (3, 2) thì lại ngược lại và cặp (2, 4) thì bằng nhau cần loại bỏ khi đếm và chú ý khi a = 0, a = 1 là những trường hợp đặc biệt.
Vậy đối với mỗi phần tử trong mảng A[] bạn cần đếm xem trong mảng B[] có bao nhiêu phần tử lớn hơn nó.
Đầu vào
Dòng 1 là N và M
Dòng 2 gồm N số trong mảng A[]
Dòng 3 gồm M số trong mảng B[]
Giới hạn
1<=N,M<=2.10^5
0<=A[i], B[i]<=10^9
Đầu ra
In ra đáp án của bài toán
Ví dụ :
Input 01
4 2
3 9 7 2
2 5
Output 01
3