[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ài
Time limit: 1.0 / Memory limit: 256M

Point: 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ài
Time limit: 1.0 / Memory limit: 256M

Point: 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ài
Time limit: 1.0 / Memory limit: 256M

Point: 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ài
Time limit: 1.0 / Memory limit: 256M

Point: 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ài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho mảng A[]N phần tử, mảng B[]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