Mô tả bài toán
Cho 2n điểm 2D chia thành 2 tập coordA, coordB (mỗi tập n điểm). Tạo cặp (a,b) với sao cho và . Mỗi điểm chỉ dùng 1 lần. Tìm số cặp tối đa.
Ví dụ
Input: Output: n=3, A={{1,3},{2,4},{4,3}}, B={{2,2},{4,2},{0,2}}. Đầu ra: 1 (cặp (1,3)-(0,2) không thỏa a.xThuật toán (Tham lam + Sắp xếp)
A và tăng dần theo x (rồi y).A từ lớn đến nhỏ (i=n-1..0).A[i], tìm đầu tiên chưa dùng (theo thứ tự tăng) thỏa (lưu ý: code gốc so sánh firstĐoạn mã C++
#include <bits/stdc++.h>
using namespace std;
void solve(int n,vector<pair<int,int>> A,vector<pair<int,int>> B){
int chk[100]={0};
sort(A.begin(),A.end());
sort(B.begin(),B.end());
int k=0;
for(int i=n-1;i>=0;i--){
for(int j=0;jĐầu vào / Đầu ra
3, {{1,3},{2,4},{4,3}}, {{2,2},{4,2},{0,2}}1