LQDOJ Cup 2025 - Round #5

Bộ đề bài

# Bài tập Điểm Thời gian: Giới hạn bộ nhớ
1 LQDOJ Cup 2025 - Round #5 - Đại chiến vũ trụ 100 (p) 1.5s 512M
2 LQDOJ Cup 2025 - Round #5 - Diện tích chung lớn nhất 100 (p) 2.0s 512M
3 LQDOJ Cup 2025 - Round #5 - Hoán vị 100 (p) 2.5s 1G

1. LQDOJ Cup 2025 - Round #5 - Đại chiến vũ trụ

Điểm: 100 (p) Thời gian: 1.5s Bộ nhớ: 512M Input: teaone.inp Output: teaone.out

Tại vũ trụ LoL, các nền văn minh toàn vũ trụ đang đại chiến giành lấy danh hiệu thiên hạ đệ nhất vô song. Giữa những trận đánh ác liệt, thương vong là điều không thể tránh khỏi. Có những nền văn minh nhỏ bé đã bị nuốt chửng bởi thế lực lớn hơn. Ở vũ trụ này, Tea One — người sở hữu sức mạnh vô địch, một cái thở nhẹ cũng làm lay chuyển một thiên hà, một cái búng tay cũng đủ xóa sổ một nền văn minh, được xưng là đấng tối cao của muôn loài. Sau những cuộc hỗn chiến, chỉ còn \(n\) nền văn minh tồn tại. Các nền văn minh được đánh số từ \(1\) đến \(n\). Nền văn minh thứ \(i\) sở hữu sức công phá \(dam_i\) và sức chống chịu \(hp_i\). Nhờ tầm ảnh hưởng tuyệt đối, Tea One đã triệu tập những người đứng đầu của \(n\) nền văn minh để đàm phán lập lại hòa bình cho toàn vũ trụ. Cuộc đàm phán không đi đến hồi kết vì các nền văn minh không tìm được tiếng nói chung. Bước ngoặt đến khi Tea One triệu hồi \(m\) thiên tướng cấp cao. Các thiên tướng được đánh số từ \(1\) đến \(m\). Mọi thiên tướng đều như bức tường thành vững chắc ngăn chặn mọi xung đột. Thiên tướng thứ \(j\) có chỉ số tấn công \(atk_j\) và chỉ số phòng thủ \(def_j\). Đấng tối cao Tea One cho phép mỗi nền văn minh được kết nạp thêm các thiên tướng để gia tăng sức mạnh. Nếu thiên tướng thứ \(j\) gia nhập nền văn minh thứ \(i\) thì sức mạnh tổng thể của nền văn minh đó là:

\[\max\!\left(\,(dam_i + atk_j)^{2} + hp_i^{2},\; dam_i^{2} + (hp_i + def_j)^{2}\,\right)\]

Ngài Tea One bắt đầu giao phó các thiên tướng cho từng nền văn minh, đầu tiên là nền văn minh thứ \(1\), sau đó đến nền văn minh thứ \(2\), rồi đến nền văn minh thứ \(3\), \(\ldots\), cuối cùng là nền văn minh thứ \(n\). Cách ngài lựa chọn thiên tướng cho mỗi nền văn minh như sau:

  • Ngài không chọn một thiên tướng hai lần. Nói cách khác, ngài chỉ chọn một thiên tướng chưa từng được lựa chọn cho bất kỳ nền văn minh nào trước đó.
  • Ngài sẽ lựa chọn thiên tướng sao cho sức mạnh tổng thể của nền văn minh đó đạt được cực đại.
  • Trong các thiên tướng thỏa mãn cả hai điều kiện trên, ngài sẽ chọn thiên tướng có chỉ số nhỏ nhất.

Ting ting ting — tiếng chuông báo thức vang lên, xé toạc bầu không khí mơ mộng. Bạn tỉnh dậy và nhận ra tất cả những gì vừa trải qua chỉ là một giấc mơ. Thế nhưng, bạn vẫn nhớ chi tiết từng chỉ số của từng nền văn minh và thiên tướng. Giờ bạn thắc mắc, ngài Tea One sẽ giao phó những thiên tướng nào cho các nền văn minh.

Dữ liệu

Vào từ file văn bản teaone.inp:

  • Dòng đầu tiên chứa hai số nguyên \(n\) và \(m\) \((1 \le n \le m \le 10^6)\) lần lượt là số nền văn minh và số thiên tướng.
  • Dòng thứ hai chứa \(n\) số nguyên \(dam_1, dam_2, \ldots, dam_n\) \((1 \le dam_i \le 10^9)\) thể hiện sức công phá của các nền văn minh.
  • Dòng thứ ba chứa \(n\) số nguyên \(hp_1, hp_2,\ldots, hp_n\) \((1 \le hp_i \le 10^9)\) thể hiện sức chống chịu của các nền văn minh.
  • Dòng thứ tư chứa \(m\) số nguyên \(atk_1, atk_2, \ldots, atk_m\) \((1 \le atk_j \le 10^9)\) thể hiện chỉ số tấn công của các thiên tướng.
  • Dòng thứ năm chứa \(m\) số nguyên \(def_1, def_2, \ldots, def_m\) \((1 \le def_j \le 10^9)\) thể hiện chỉ số phòng thủ của các thiên tướng.

Kết quả

Ghi ra file văn bản teaone.out:

  • In ra một dòng duy nhất gồm \(n\) số nguyên \(id_1, id_2,\ldots, id_n\) \((1 \le id_i \le m)\) thể hiện chỉ số của các thiên tướng được đấng tối cao Tea One giao phó cho các nền văn minh.

Ràng buộc

Bộ test của bài được chia làm các subtask như sau:

  • Subtask \(1\) (\(35\) điểm): \(n \le m \le 10^3\)
  • Subtask \(2\) (\(65\) điểm): Không có ràng buộc gì thêm.

Ví dụ

Ví dụ 1
teaone.inp
7 12
7 4 6 4 1 4 4
5 5 3 5 5 7 2
2 4 8 1 10 6 1 7 8 3 7 9
8 8 2 7 5 5 8 9 7 2 7 1
teaone.out
5 8 12 1 2 7 3 

2. LQDOJ Cup 2025 - Round #5 - Diện tích chung lớn nhất

Điểm: 100 (p) Thời gian: 2.0s Bộ nhớ: 512M Input: commonarea.inp Output: commonarea.out

An là một nhà quy hoạch đô thị. Anh ấy có một tấm bản đồ thể hiện \(n\) khu vực được phép xây dựng. Các khu vực này được đánh số từ \(1\) đến \(n\).

Tấm bản đồ này được gắn một hệ tọa độ Descartes. Khu vực được phép xây dựng thứ \(i\) có dạng một hình chữ nhật có các cạnh song song với trục tọa độ, với tọa độ của hai góc đối diện là \((x_1^{(i)}, y_1^{(i)})\) và \((x_2^{(i)}, y_2^{(i)})\).

An đang xem xét \(q\) dự án xây dựng. Các dự án được đánh số từ \(1\) đến \(q\). Trong dự án thứ \(j\), An cần chọn ra một vùng đất nằm trong ít nhất \(k_j\) khu vực được phép xây dựng. An muốn biết diện tích lớn nhất của một vùng đất như vậy. Trong trường hợp không tồn tại \(k_j\) khu vực nào có phần chung, diện tích lớn nhất là \(0\).

Các bạn hãy giúp An tìm diện tích lớn nhất với mỗi dự án.

Dữ liệu

Vào từ file văn bản commonarea.inp:

  • Dòng đầu tiên chứa hai số nguyên \(n\) và \(q\) \((1 \le n \le 333, 1 \le q \le 11)\) – số khu vực được phép xây dựng và số dự án.
  • Trong \(n\) dòng tiếp theo, dòng thứ \(i\) chứa bốn số nguyên \(x_1^{(i)}, y_1^{(i)}, x_2^{(i)}, y_2^{(i)}\) \(( -123456789 \le x_1^{(i)}, y_1^{(i)}, x_2^{(i)}, y_2^{(i)} \le 987654321)\) – tọa độ hai góc đối diện của khu vực được phép xây dựng thứ \(i\).
  • Dòng cuối cùng chứa \(q\) số nguyên \(k_1, k_2, \ldots, k_q\) \((1 \le k_j \le n)\) – số lượng khu vực trong các dự án.

Kết quả

Ghi ra file văn bản commonarea.out:

In ra một dòng duy nhất chứa \(q\) số nguyên, số thứ \(j\) là diện tích lớn nhất tìm được trong dự án thứ \(j\).

Ràng buộc

Bộ test của bài được chia làm các subtask như sau:

  • Subtask \(1\) (\(19\) điểm): \(n \le 22\).
  • Subtask \(2\) (\(19\) điểm): \(n \le 33\).
  • Subtask \(3\) (\(13\) điểm): \(n \le 66\).
  • Subtask \(4\) (\(13\) điểm): \(k_j \ge n - 3\).
  • Subtask \(5\) (\(23\) điểm): \(k_j \ge n - 4\).
  • Subtask \(6\) (\(13\) điểm): Không có ràng buộc gì thêm.

Ví dụ

Ví dụ 1
commonarea.inp
2 2
0 0 5 5
2 2 7 7
1 2
commonarea.out
25 9 
Ví dụ 2
commonarea.inp
5 5
0 0 5 5
1 1 4 4
2 0 3 5
0 2 5 3
6 6 7 7
1 2 3 4 5
commonarea.out
25 9 3 1 0  

Giải thích

Hình vẽ dưới đây mô tả ví dụ thứ nhất:

  • Với \(k_1 = 1\), diện tích lớn nhất là diện tích của khu vực \(1\), bằng \(25\).
  • Với \(k_2 = 2\), diện tích lớn nhất là phần chung của khu vực \(1\) và \(2\), bằng \(9\).

Hình vẽ dưới đây mô tả ví dụ thứ hai:

  • Với \(k_1 = 1\), diện tích lớn nhất là diện tích của khu vực \(1\) (bằng \(25\)).
  • Với \(k_2 = 2\), diện tích lớn nhất là phần chung của khu vực \(1\) và \(2\) (bằng \(9\)).
  • Với \(k_3 = 3\), diện tích lớn nhất là phần chung của khu vực \(1\), \(2\) và \(3\) (bằng \(3\)).
  • Với \(k_4 = 4\), diện tích lớn nhất là phần chung của khu vực \(1\), \(2\), \(3\) và \(4\) (bằng \(1\)).
  • Với \(k_5 = 5\), \(5\) khu vực không có phần chung, nên diện tích lớn nhất tìm được là \(0\).

3. LQDOJ Cup 2025 - Round #5 - Hoán vị

Điểm: 100 (p) Thời gian: 2.5s Bộ nhớ: 1G Input: permutations.inp Output: permutations.out

Là người bất chấp mọi quy tắc, thách thức mọi cuộc chơi, bạn Hiếu giấu giải quốc gia rất thích xáo trộn mọi thứ (không loại trừ lịch trình của chính mình) nhằm tăng độ khó cho game. Thú vị hơn, Hiếu còn có sở thích thích thay đổi vị trí của các tập hữu hạn số tự nhiên phân biệt, sau đó tìm lại một số hoán vị "đẹp" (theo một tiêu chí nào đó).

Gọi \(p = (p_1, p_2, \ldots, p_{2 \cdot n})\) là một hoán vị của \(2 \cdot n\) số tự nhiên \(1, 2, 3, \ldots, 2 \cdot n\). Là người có khả năng tìm ra trật tự trong hỗn loạn, Hiếu định nghĩa một hoán vị \(p\) là "hoán vị đẹp" khi và chỉ khi nó thỏa mãn các tính chất sau:

  1. \(p_1 > p_2 > p_3 > \ldots > p_n\)
  2. \(p_{2 \cdot n} < p_{2 \cdot n - 1} < \ldots < p_{n + 1}\)
  3. \(p_{i} < p_{i + n}\) với mọi \(1 \le i \le n\)

Với mỗi giá trị \(n\) cho trước, số "hoán vị đẹp" là rất nhiều. Cho hai số nguyên \(n\) và \(k\), hãy tìm "hoán vị đẹp" thứ \(k\) nếu sắp xếp mọi hoán vị đẹp theo thứ tự từ điển tăng dần.

Nhắc lại: Với hai dãy \(\alpha\) và \(\beta\) cùng có độ dài \(\eta\), \(\alpha\) xếp trước \(\beta\) theo thứ tự từ điển khi và chỉ khi tồn tại một vị trí \(\iota\) \((1 \le \iota \le \eta)\) sao cho:

  • \(\alpha_{\kappa} = \beta_{\kappa}\) với mọi \(1 \le \kappa \le \iota - 1\)
  • \(\alpha_{\iota} < \beta_{\iota}\)

Dữ liệu

Vào từ file văn bản permutations.inp:

Dòng đầu tiên chứa một số nguyên \(\tau\) \((1\le \tau \le 987)\) là số bộ dữ liệu. Mỗi dòng tiếp theo chứa hai số nguyên \(n\) \((1\le n \le 121393)\) và \(k\) \((1 \le k \le 679891637638612258)\) mô tả một bộ dữ liệu.

Kết quả

Ghi ra file văn bản permutations.out:

Với mỗi bộ dữ liệu, in ra trên một dòng một số nguyên theo quy tắc sau:

  • Nếu không tồn tại hoán vị thứ \(k\) thỏa mãn, in ra \(-1\).
  • Ngược lại, gọi hoán vị cần tìm là \(a_1, a_2, \ldots, a_{2 \cdot n}\); in ra giá trị \(H = (a_1 \cdot 22071997^1 + a_2 \cdot 22071997^2 + a_3 \cdot 22071997^3 + \dots + a_{2 \cdot n} \cdot 22071997^{2 \cdot n}) \mod (10^9 + 19972207)\).
    \end{itemize}

Ràng buộc

Bộ test của bài được chia làm các subtask như sau:

  • Subtask \(1\) (\(12\) điểm): \(n \le 5\)
  • Subtask \(2\) (\(20\) điểm): \(n \le 13\)
  • Subtask \(3\) (\(20\) điểm): \(k = 1\)
  • Subtask \(4\) (\(14\) điểm): \(\tau \le 233\) và \(n \le 377\)
  • Subtask \(5\) (\(18\) điểm): \(n \le 4181\)
  • Subtask \(6\) (\(16\) điểm): Không có ràng buộc gì thêm

Ví dụ

Ví dụ 1
permutations.inp
3
3 1
3 2
3 3
permutations.out
827482776
815013008
426921014

Giải thích

Trong bộ dữ liệu thứ nhất, hoán vị cần tìm là \((3,2,1,6,5,4)\). Giá trị cần in là \((3 \cdot 22071997^1 + 2 \cdot 22071997^2 + 1 \cdot 22071997^3 + 6 \cdot 22071997^4 + 5\cdot 22071997^5 + 4 \cdot 22071997^6) \mod (10^9 + 19972207)\\ = 462497922830663637557404222323368989234538169 \mod (10^9 + 19972207) = 827482776\)

Trong bộ dữ liệu thứ nhì, hoán vị cần tìm là \((4,2,1,6,5,3)\). Giá trị cần in là \((4 \cdot 22071997^1 + 2 \cdot 22071997^2 + 1 \cdot 22071997^3 + 6 \cdot 22071997^4 + 5 \cdot 22071997^5 + 3 \cdot 22071997^6) \mod (10^9 + 19972207)\\ = 346873448671141086341527499616207522877585437 \mod (10^9 + 19972207) = 815013008\)

Trong bộ dữ liệu thứ ba, hoán vị cần tìm là \((4,3,1,6,5,2)\). Giá trị cần in là \((4 \cdot 22071997^1 + 3 \cdot 22071997^2 + 1 \cdot 22071997^3 + 6\cdot 22071997^4 + 5 \cdot 22071997^5 + 2 \cdot 22071997^6) \mod (10^9 + 19972207)\\ = 231248974511618535125650776909533229550128717 \mod (10^9 + 19972207) = 426921014\)