Bài toán lập trình chia tập hợp


Mình ko nghĩ ra được cách làm bài này ạ. Nếu xét theo kiểu chọn hết các trường hợp có thể sắp xếp thành 2 nhóm thì lại nhiều trường hợp quá mà nếu mình cố tìm cách lược bớt thì lại bị xót trường hợp. Mong mọi người chỉ giáo ạ. Mình cảm ơn nhiều ạ!

Số dương thì dùng nhánh cận thôi :slight_smile: nhưng n lớn hơn 50 thì chỉ có sort lại rồi greedy.

2 Likes

sort với greedy là j vậy bạn. Mk hơi kém khoản này

Greedy bài này tức là duy trì |hiệu số| nhỏ nhất giữa dãy chọn và dãy không chọn, bằng cách tạo các cặp số.

3 Likes

bài này cần chia cả tập số đó thành 2 rồi tính hiệu của 2 tập số mới được lập ra nhưng mk đang ko biết cách để chia tập số đó thành 2 ấy

Bạn tham khảo link bài viết này xem nhé

3 Likes

Cái này là giải bài cơ bản :smiley: thêm điều kiện số phần tử thì ko đc.

Sau khi sort thì lấy hai phần tử chỉ số chẵn lẻ là 1 cặp, mỗi cặp chọn đúng 1 phần tử theo cách greedy là giữ chênh lệch thấp hơn.

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?