Đồng xu
Cho một số nguyên dương n và k số nguyên dương a_1,a_2,\dots,a_k ≤ 2n . Người ta bày sẵn 2n đồng xu trên bàn sao cho có đúng n đồng xu ngửa và n đồng xu sấp. Với mỗi thao tác, bạn có thể chọn một số bất kỳ trong tập a, giả sử số bạn chọn là t. Bạn sẽ lấy các đồng xu liên tiếp (có thể không lấy đồng xu nào) có cùng trạng thái (cùng sấp hoặc cùng ngửa), sau đó chuyển chúng ra đầu dãy. Ví dụ:
Với trạng thái các đồng xu được đặt như sau: AABBBBAA (ký hiệu A là mặt ngửa và B là mặt sấp) và t = 4, ta có thể thu được các trạng thái sau:
- BBBAABAA (chuyển các đồng xu 3, 4, 5 lên đầu).
- BBBBAAAA (chuyển các đồng xu 3, 4, 5, 6 lên đầu).
- ...
Hỏi rằng với dãy a đã cho, tồn tại hay không một cách sắp xếp các đồng xu sao cho không thể có trường hợp n đồng xu đầu tiên có cùng một trạng thái sau một số hữu hạn các thao tác?
Input, Output và Subtasks:
Input:
- Dòng đầu tiên gồm hai số nguyên dương n và k.
- Dòng tiếp theo gồm các số nguyên dương miêu tả dãy a.
Output:
In ra YES nếu tồn tại một cách sắp xếp các đồng xu sao cho không thể khiến n đồng xu đầu tiên có cùng một trạng thái sau một số hữu hạn các thao tác, và NO trong trường hợp ngược lại.
Subtasks:
n,a_i,k\leq 2.10^6; k,a_i\leq 2n
Sample:
Input:
4 4
1 2 3 4
Output:
NO
Sample 2:
Input:
4 2
1 2
Output:
YES
Notes:
Tồn tại cách sắp xếp ABABABAB.
Phần tử quan trọng
Cho một dãy số nguyên a gồm n phần tử và một số nguyên dương k. Một phần tử a_i được gọi là quan trọng khi và chỉ khi tồn tại một tập các phần tử của dãy a (giá trị có thể trùng nhau nhưng vị trí bắt buộc phải khác nhau) có chứa phần tử a_i sao cho tổng các giá trị trong tập này lớn hơn hoặc bằng k, nhưng khi bỏ đi số a_i thì tổng các số lại nhỏ hơn k. Hãy xác định xem mỗi phần tử trong dãy a có quan trọng hay không.
Input, Output và Subtasks:
Input:
- Dòng đầu tiên chứa hai số nguyên dương.
- Dòng tiếp theo chức n số nguyên dương của dãy a.
Output:
- In ra một dãy nhị phân độ dài n, bit thứ i là 0 nếu phần tử thứ i không quan trọng và ngược lại.
Subtasks:
- n,k\leq 5.10^4,a_i\leq 10^9 với mọi testcase.
Sample:
Input:
4 10
4 1 6 2
Output:
1010
Notes:
- Tồn tại tập {4,6} có tổng lớn hơn hoặc bằng 10, nhưng khi bỏ một trong hai phần tử đó đi thì tổng sẽ nhỏ hơn 10, vậy phần tử thứ 1 và 3 là quan trọng.
- Với các phần tử 1 và 2, để có được một tập có tổng lớn hơn hoặc bằng 10, tập đó phải có cả phần tử 4 và 6, nên khi bỏ đi phần tử thứ 1 hoặc 2 thì tổng vẫn lớn hơn hoặc bằng 10. Vậy phần tử thứ 2 và 4 là không quan trọng.
SQRT + SQRT = SQRT? (bản khó)
Các bài G, H, I chỉ khác nhau ở giới hạn của c.
Cho số nguyên không âm c, bạn cần đếm xem có bao nhiêu số nguyên không âm a ≤ c sao cho (\sqrt c - \sqrt a)^2 là một số nguyên, hay nói cách khác tồn tại số nguyên không âm b sao cho \sqrt a + \sqrt b = \sqrt c.
Input, Output và Subtask:
Input:
- Dòng đầu tiên chứa số nguyên T\leq 100, miêu tả số testcases.
- T dòng tiếp theo, mỗi dòng gồm 1 số nguyên không âm c.
Output:
Gồm T dòng, mỗi dòng là số các số nguyên dương a thõa mãn điều kiện, sắp xếp theo thứ tự không giảm.
Subtask:
Với bản khó, c\leq 10^{18}
Sample:
Input:
5
5
10
15
20
25
Output:
2
2
2
3
6
Notes:
-
\sqrt{0} + \sqrt{5} = \sqrt{5}
-
\sqrt{0} + \sqrt{10} = \sqrt{10}
-
\sqrt{0} + \sqrt{15} = \sqrt{15}
-
\sqrt{0} + \sqrt{20} = \sqrt{5} + \sqrt{5} = \sqrt{20}
-
\sqrt{0} + \sqrt{25} = \sqrt{1} + \sqrt{16} = \sqrt{4} + \sqrt{9} = \sqrt{25}
SQRT + SQRT = SQRT? (bản vừa)
Các bài G, H, I chỉ khác nhau ở giới hạn của c.
Cho số nguyên không âm c, bạn cần đếm xem có bao nhiêu số nguyên không âm a ≤ c sao cho (\sqrt c - \sqrt a)^2 là một số nguyên, hay nói cách khác tồn tại số nguyên không âm b sao cho \sqrt a + \sqrt b = \sqrt c.
Input, Output và Subtask:
Input:
- Dòng đầu tiên chứa số nguyên T\leq 100, miêu tả số testcases.
- T dòng tiếp theo, mỗi dòng gồm 1 số nguyên không âm c.
Output:
Gồm T dòng, mỗi dòng là số các số nguyên dương a thõa mãn điều kiện, sắp xếp theo thứ tự không giảm.
Subtask:
Với bản vừa, c\leq 10^{12}
Sample:
Input:
5
5
10
15
20
25
Output:
2
2
2
3
6
Notes:
-
\sqrt{0} + \sqrt{5} = \sqrt{5}
-
\sqrt{0} + \sqrt{10} = \sqrt{10}
-
\sqrt{0} + \sqrt{15} = \sqrt{15}
-
\sqrt{0} + \sqrt{20} = \sqrt{5} + \sqrt{5} = \sqrt{20}
-
\sqrt{0} + \sqrt{25} = \sqrt{1} + \sqrt{16} = \sqrt{4} + \sqrt{9} = \sqrt{25}
SQRT + SQRT = SQRT? (bản dễ)
Các bài G, H, I chỉ khác nhau ở giới hạn của c.
Cho số nguyên không âm c, bạn cần đếm xem có bao nhiêu số nguyên không âm a ≤ c sao cho (\sqrt c - \sqrt a)^2 là một số nguyên, hay nói cách khác tồn tại số nguyên không âm b sao cho \sqrt a + \sqrt b = \sqrt c.
Input, Output và Subtask:
Input:
- Dòng đầu tiên chứa số nguyên T\leq 100, miêu tả số testcases.
- T dòng tiếp theo, mỗi dòng gồm 1 số nguyên không âm c.
Output:
Gồm T dòng, mỗi dòng là số các số nguyên dương a thõa mãn điều kiện, sắp xếp theo thứ tự không giảm.
Subtask:
Với bản dễ, c\leq 10^6
Sample:
Input:
5
5
10
15
20
25
Output:
2
2
2
3
6
Notes:
-
\sqrt{0} + \sqrt{5} = \sqrt{5}
-
\sqrt{0} + \sqrt{10} = \sqrt{10}
-
\sqrt{0} + \sqrt{15} = \sqrt{15}
-
\sqrt{0} + \sqrt{20} = \sqrt{5} + \sqrt{5} = \sqrt{20}
-
\sqrt{0} + \sqrt{25} = \sqrt{1} + \sqrt{16} = \sqrt{4} + \sqrt{9} = \sqrt{25}
Chú mèo và những chiếc hộp (bản dễ)
Đây là một bài tập giao tiếp với máy chấm. Bài A và B chỉ khác nhau ở giới hạn n
Có một con mèo và n chiếc hộp được đánh số từ 1 đến n, ở ngày 0 con mèo đang ở trong một hộp bất kỳ.
Mỗi đêm, nó sẽ bỏ ra chiếc hộp của mình và di chuyển sang chiếc hộp khác ở ngay cạnh chiếc hộp của nó, nói cách khác, nếu con mèo đang ở hộp thứ i, nó sẽ đi sang chiếc hộp thứ i − 1 (nếu i − 1 ≥ 1) hoặc chiếc hộp thứ i + 1 (nếu i + 1 ≤ n). Mỗi buổi sáng, bạn sẽ đi đến những chiếc hộp và được mở một chiếc hộp. Nếu bạn tìm thấy chú mèo, quá trình kết thúc. Nếu không, bạn đóng chiếc hộp lại và để lại chỗ cũ. Do sự kiên nhẫn của bạn có giới hạn, bạn chỉ có thể thực hiện quá trình này trong không quá 10^5 ngày.
Cách giao tiếp với máy chấm và giới hạn:
Cách giao tiếp với máy chấm:
Đầu tiên, chương trình bạn phải nhập vào một số nguyên dương n là số chiếc hộp.
Bạn thao tác với máy chấm bằng hai thao tác sau đến khi bạn trả lời chính xác hoặc vượt quá số truy vấn cho phép:
- Bạn đưa ra một số nguyên dương k (1\leq k\leq n)
- Nếu con mèo đang ở hộp thứ k, bạn sẽ nhập được một xâu có nội dung
TRUE, chương trình của bạn kết thúc và bạn nhận về verdictAccepttest đó, ngược lại, bạn sẽ nhập được một xâu có nội dungFALSEvà bạn phải tiếp tục đoán.
Nếu bạn sử dụng quá số lượng truy vấn cho phép, bạn được tính sai test đó, đồng thời sai cả bài.
Giới hạn:
Với bản dễ, n\leq 10^4
Sample:
| Input | Output | Giải thích |
|---|---|---|
5 |
Máy chấm cho biết có 5 chiếc hộp. Con mèo hiện tại đang ở hộp thứ 3 | |
2 |
Bạn đoán con mèo đang ở hộp thứ 2 | |
FALSE |
Bạn đoán không chính xác. Con mèo di chuyển sang hộp thứ 2 | |
3 |
Bạn đoán con mèo đang ở hộp thứ 3 | |
FALSE |
Bạn đoán không chính xác. Con mèo di chuyển sang hộp thứ 1 | |
1 |
Bạn đoán con mèo đang ở hộp thứ 1 | |
TRUE |
Bạn đoán chính xác, chương trình kết thúc và bạn được tính điểm |
Chú mèo và những chiếc hộp (bản khó)
Đây là một bài tập giao tiếp với máy chấm. Bài A và B chỉ khác nhau ở giới hạn n
Có một con mèo và n chiếc hộp được đánh số từ 1 đến n, ở ngày 0 con mèo đang ở trong một hộp bất kỳ.
Mỗi đêm, nó sẽ bỏ ra chiếc hộp của mình và di chuyển sang chiếc hộp khác ở ngay cạnh chiếc hộp của nó, nói cách khác, nếu con mèo đang ở hộp thứ i, nó sẽ đi sang chiếc hộp thứ i − 1 (nếu i − 1 ≥ 1) hoặc chiếc hộp thứ i + 1 (nếu i + 1 ≤ n). Mỗi buổi sáng, bạn sẽ đi đến những chiếc hộp và được mở một chiếc hộp. Nếu bạn tìm thấy chú mèo, quá trình kết thúc. Nếu không, bạn đóng chiếc hộp lại và để lại chỗ cũ. Do sự kiên nhẫn của bạn có giới hạn, bạn chỉ có thể thực hiện quá trình này trong không quá 10^5 ngày.
Cách giao tiếp với máy chấm và giới hạn:
Cách giao tiếp với máy chấm:
Đầu tiên, chương trình bạn phải nhập vào một số nguyên dương n là số chiếc hộp.
Bạn thao tác với máy chấm bằng hai thao tác sau đến khi bạn trả lời chính xác hoặc vượt quá số truy vấn cho phép:
- Bạn đưa ra một số nguyên dương k (1\leq k\leq n)
- Nếu con mèo đang ở hộp thứ k, bạn sẽ nhập được một xâu có nội dung
TRUE, chương trình của bạn kết thúc và bạn nhận về verdictAccepttest đó, ngược lại, bạn sẽ nhập được một xâu có nội dungFALSEvà bạn phải tiếp tục đoán.
Nếu bạn sử dụng quá số lượng truy vấn cho phép, bạn được tính sai test đó, đồng thời sai cả bài.
Giới hạn:
Với bản dễ, n\leq 5.10^4
Sample:
| Input | Output | Giải thích |
|---|---|---|
5 |
Máy chấm cho biết có 5 chiếc hộp. Con mèo hiện tại đang ở hộp thứ 3 | |
2 |
Bạn đoán con mèo đang ở hộp thứ 2 | |
FALSE |
Bạn đoán không chính xác. Con mèo di chuyển sang hộp thứ 2 | |
3 |
Bạn đoán con mèo đang ở hộp thứ 3 | |
FALSE |
Bạn đoán không chính xác. Con mèo di chuyển sang hộp thứ 1 | |
1 |
Bạn đoán con mèo đang ở hộp thứ 1 | |
TRUE |
Bạn đoán chính xác, chương trình kết thúc và bạn được tính điểm |
Chương trình
Cho một hàm f được viết bằng ngôn ngữ C++ như sau (ở đây ^ là phép XOR, & là phép AND, << là phép dịch bit):
long long f (long long a, long long b)
{
if (b == 0) return a;
else return f(a ^ b, (a & b) << 1);
}
Hỏi trong số các số nguyên dương từ 1 tới n, có bao nhiêu cặp (i,j) (i\leq j) sao cho f(i,j) = i^j
Input, Output và Subtask:
Input:
- Một dòng gồm số nguyên dương duy nhất là n.
Output:
- Số cặp số thõa mãn.
Subtask:
- n\leq 50000 với mọi testcase.
Sample:
Input:
5
Output:
5
Subtasks:
Các cặp số thõa mãn là (1,2),(1,4),(2,4),(2,5),(3,4).
A cộng B
Tudor dang ngồi trong lớp học toán, ở trước màn hình laptop. Rõ ràng rằng cậu đang không chú ý nghe giảng. Đen cho cậu, cậu bị giáo viên gọi lên để giải một số bài toán. Vì giáo viên cũng không mong đợi gì nhiều ở Turdo, cậu ấy chỉ cần làm một vài phép cộng đơn giản. Tuy nhiên, việc đơn giản với bạn và mình thì chưa chắc đã đơn giản với Turdo. Hãy giúp Turdo làm các bài toán nhé!
Input
Dòng đầu tiên sẽ gồm một số nguyên ~N~ (~1 \le N \le 100\,000~), số phép cộng mà Turdo phải làm. ~N~ dòng tiếp theo sẽ chứa hai số nguyên có giá trị tuyệt đối nhỏ hơn ~1\,000\,000\,000~, chính là hai số nguyên dương mà Turdo phải cộng
Output
In ra ~N~ dòng, mỗi dòng gồm một số nguyên, là tổng của hai số ở dòng tương ứng
Sample Input
2
1 1
-1 0
Sample Output
2
-1
Cực đại địa phương
Cho một bảng n hàng, m cột. Người ta xét tất cả khả năng điền các số từ 1 đến k vào bảng. Một ô trong bảng được gọi là cực đại địa phương nếu như nó thoả mãn số được điền lớn hơn tất cả các ô cùng hàng và cùng cột. Hãy đưa ra giá trị \displaystyle \sum_{g \, = \, 0}^{n \, \cdot \, m} (g + 1) \cdot A(g) trong đó A(g) là số cách điền bảng sao cho có chính xác g ô cực đại địa phương.
Input
- Dòng đầu tiên chứa số nguyên T (1 \le T \le 5) là số lượng test.
- Trong T dòng tiếp theo, mỗi dòng chứa ba số nguyên n, m và k (1 \leq n, m \leq 10^{10^6}, 1 \leq k \leq 10^6) lần lượt là số hàng, số cột của bảng và giá trị tối đa được điền.
Output
- Gồm T dòng, dòng thứ i in ra phần dư trong phép chia đáp án của test thứ i cho 10 ^ 9 + 7.
Scoring
- Subtask 1 (10\% số điểm): n \cdot m \le 10, k \le 5.
- Subtask 2 (20\% số điểm): n, m \le 2000, k = 2.
- Subtask 3 (30\% số điểm): n, m, k \le 200.
- Subtask 4 (30\% số điểm): n, m \le 10^6.
- Subtask 5 (10\% số điểm): Không có ràng buộc gì thêm.
Example
Test 1
Input
5
7 1 3
4 2 3
8 1 2
10 1 5
3 3 4
Output
2642
10233
264
12589025
487936
Note
- Trong test thứ nhất: A(0) = 1732, A(1) = 455, A(2) = 0, A(3) = 0, A(4) = 0, A(5) = 0, A(6) = 0 và A(7) = 0 nên \displaystyle \sum_{g \, = \, 0}^{7} (g + 1) \cdot A(g) = 2642.
- Trong test thứ hai: A(0) = 3765, A(1) = 1920, A(2) = 876, A(3) = 0, A(4) = 0, A(5) = 0, A(6) = 0, A(7) = 0 và A(8) = 0 nên \displaystyle \sum_{g \, = \, 0}^{8} (g + 1) \cdot A(g) = 10233.
Test 2
Input
5
5 1 4
7 1 2
2 4 5
2 4 5
5 2 2
Output
1514
135
744625
744625
1184
Tạo đồ thị
Bạn được cho V đỉnh của một đồ thị và phải tạo một đồ thị vô hướng liên thông bằng cách nối các đỉnh với các cạnh đều có trọng số là 1. Các đỉnh của đồ thị được đánh số lần lượt từ 1 đến V. Gọi E là số cạnh của đồ thị, d_i là khoảng cách nhỏ nhất từ đỉnh 1 đến đỉnh i và S = d_1 + d_2 + ... + d_V. Hỏi giá trị (V+E)*S có thể có giá trị lớn nhất là bao nhiêu?
Input
-
Dòng đầu tiên chứa số testcase T.
-
T dòng tiếp theo, mỗi dòng chứa một số nguyên dương V.
Output
- Gồm T dòng, mỗi dòng chứa giá trị lớn nhất của (V+E)*S trong mỗi testcase. Vì giá trị này có thể rất lớn nên cần in ra phần dư của giá trị đó sau phép chia lấy dư cho 10^9+7.
Scoring
-
3\% số điểm có T = 1, V \le 7.
-
22\% số điểm có T \le 10, V \le 1000.
-
25\% số điểm có T \le 1000, V \le 10^6.
-
50\% số điểm có T \le 10^5, V \le 10^9.
Example test 1
Sample input 1
1
2
Sample output 1
3
Example test 2
Sample input 2
1
5
Sample output 2
90
Notes
Những đồ thị sau có thể cho ra kết quả 90.
1 2
2 3
3 4
4 5
(với S = 10, V = 5, E = 4)
hoặc
1 2
2 3
3 4
4 5
3 5
(với S = 9, V = 5, E = 5)