Luyện Tập Tổng Hợp Ngày 22-11
Tìm số trong mảng
Nộp bàiCho dãy số nguyên \(a\) gồm \(n\) phần tử được sắp xếp tăng dần. Hãy xác định giá trị \(x\) có xuất hiện trong mảng hay không ?
Input
- Dòng đâu tiên chứa số hai số nguyên dương \(n\) và \(k\) - độ dài của dãy, số câu hỏi. \((n, k \leq 100000)\)
- \(n\) số, các phần tử dãy \(a\) \((-10^9 \le a_i \le 10^9)\)
- \(k\) số nguyên dương \(x\) \((-10^9 \le x \le 10^9)\).
Output
- Gồm \(k\) dòng, mỗi dòng chứa câu trả lời cho mỗi câu hỏi.
Example
Test 1
Input
10 10
1 61 126 217 2876 6127 39162 98126 712687 1000000000
100 6127 1 61 200 -10000 1 217 10000 1000000000
Output
NO
YES
YES
YES
NO
NO
YES
YES
NO
YES
Tập xe
Nộp bàiCô giáo trường tiểu học \(X\) đang dạy \(n\) học sinh tập xe đạp, các học sinh được đánh số từ \(1\) tới \(n\), học sinh thứ \(𝑗\) có trọng lượng là \(a_𝑗\). Có một xe đạp duy nhất với tải trọng là \(m\), hai học sinh chỉ có thể cùng lên xe nếu tổng trọng lượng của hai học sinh không vượt quá \(m\).
Cô giáo tự hỏi có bao nhiêu cách chọn hai học sinh khác nhau cho cùng lên xe, sau nhiều giờ tính toán không có kết quả, cô quyết định hỏi các chuyên gia lập trình giải bài toán Counting Student Pairs (CSP)
Yêu cầu: Đếm số cặp chỉ số \(i, j\) trong đó \(i < j\) và \(a_i + a_j \leq m\)
Input
- Dòng 1 chứa hai số nguyên dương \(n, m\ (m \leq 10^6)\)
- Dòng 2 chứa \(n\) số nguyên dương \(a_1, a_2, \ldots, a_n\) (\(\forall{i}: a_i \leq 10^6\))
Output
Ghi một số nguyên duy nhất là đáp số
Scoring
- Subtask #1 (\(60\%\) số điểm): \(n \leq 10^4\).
- Subtask #2 (\(20\%\) số điểm): \(n \leq 10^5\).
- Subtask #3 (\(20\%\) số điểm): \(n \leq 10^6\).
Example
Test 1
Input
5 6
1 2 3 4 5
Output
6
Đếm cặp
Nộp bàiCho dãy số nguyên dương gồm \(N\) phần tử \(a_1,a_2,...,a_N\). Đếm số cặp chỉ số \((i,j)\) thỏa mãn:
- \(1 \le i \le j \le n\);
- \(a_i + a_j^2=K\) với \(K\) cho trước.
Input
- Dòng đầu tiên gồm 2 số nguyên dương \(N\) và \(K\) \((N \le 10^5,K \le 10^9)\)
- Dòng thứ hai chứa \(N\) số nguyên dương \(a_1,a_2,...,a_N\) \((a_i \le 10^9)\)
Output
- In ra số cặp \((i,j)\) thỏa mãn.
Example
Test 1
Input
3 5
1 2 2
Output
2
Học sinh ham chơi
Nộp bàiHôm nay thầy giáo quyết định ra một bài tập về tính trung bình công cho cả lớp làm. Đề bài yêu cầu các bạn hãy tìm một dãy con liên tiếp sao cho trung bình cộng của dãy là lớn nhất có thể. T là một là một học sinh trong lớp, vì quá ham chơi, trốn học quá nhiều nên câu ta không giải được bài này nên cậu ấy đã quyết định nhờ các bạn giúp đỡ. Các bạn hãy giúp bạn ấy nhé!
Input
- Dòng đầu tiên gồm một số nguyên dương \(N\) (\(1 ≤ N ≤ 10^5\)).
- Dòng tiếp gồm \(N\) số nguyên dương \(x\) (\(1 ≤ x ≤ 10^5\)).
Output
- Gồm một dòng duy nhất chính là kết quả của bài toán.
Scoring
- Subtask \(1\) (\(70\%\) số điểm): \(n ≤ 5000\)
- Subtask \(2\) (\(30\%\) số điểm): \(n ≤ 10^5\)
Example
Test 1
Input
6
1 1 1 3 3 3
Output
3
Tìm cặp số
Nộp bàiCho một mảng số nguyên \(A\) có \(N\) phần tử, mảng này đã được sắp xếp tăng dần. Hãy tìm vị trí của hai phần tử khác nhau bất kỳ sao cho tổng của chúng có giá trị là \(X\). Nếu trong dãy \(A\) không tồn tại hai phần tử khác nhau có tổng là \(X\) thì in ra "No solution".
Input
- Dòng đầu chứa 2 số nguyên \(N\) và \(X\).
- Dòng tiếp theo chứa \(N\) số nguyên \(A_i\).
Output
- Hai vị trí \(i\) và \(j\) khác nhau sao cho tổng ở hai vị trí này có giá là \(X\). In vị trí phần tử nhỏ hơn trước phần tử lớn hơn.
- Nếu không tồn tại in ra "No solution".
Constants
- \(2 \leq N \leq 10^6\) và \(0 \leq A_i, X \leq 10^9\)
Example
Test 1
Input
6 16
2 3 5 7 9 12
Output
4 5
Vượt Ải
Nộp bàiami đang đi vượt ải Codeforces. Để trở thành master, ami phải vượt qua \(n\) con quái vật. Con quái vật thứ \(i\) sẽ làm ami hao tổn \(a_i\) công lực. Và vì các ải này diễn ra liên tiếp, ami không có thời gian để hồi phục công lực. ami sẽ gục ngã nếu sau một trận chiến, công lực còn lại bé hơn hoặc bằng \(0\).
Ví dụ: nếu ban đầu ami có \(10\) công lực, và con quái vật đầu tiên có sức mạnh \(a_1 = 4\), ami sẽ vượt ải thành công và còn \(6\) công lực. Nếu con quái vật thứ hai có sức mạnh ít nhất là \(6\), ami sẽ bị đánh gục ở ải này.
ami đã nghiên cứu rất kỹ về đối thủ của mình. Anh biết rằng sức mạnh của chúng tương ứng là \(a_1, a_2, ..., a_n\). Và để thêm phần kỹ càng, ami sẽ mang theo một bộ giáp có thể chống được \(k\) sát thương. Nói cách khác, nếu ami sử dụng bộ giáp này khi đấu với quái vật thứ \(i\) thì chỉ mất đi \(max(0, a_i - k)\) công lực. Tuy nhiên, bộ giáp này chỉ sử dụng được cho \(1\) ải duy nhất và ami phải tính toán sử dụng sao cho tối ưu.
ami muốn vượt qua cả \(n\) ải này. Hỏi ban đầu anh phải chuẩn bị ít nhất bao nhiêu công lực? Biết rằng ami rất bá đạo nên sẽ sử dụng giáp một cách tối ưu.
Input
- Dòng đầu tiên chứa hai số nguyên dương \(n, k \ (k \leq 10^9)\) tương ứng là số quái vật và sức mạnh của giáp.
- Dòng thứ hai chứa \(n\) số nguyên dương \(a_1, a_2, ..., a_n \ (1 \leq a_i \leq 10^9)\) là sức mạnh của \(n\) con quái vật.
Output
- In ra một số nguyên là công lực ít nhất ami cần chuẩn bị trước khi vượt ải.
Scoring
- Subtask \(1\) (\(50\%\) số điểm): \(n \leq 1000\).
- Subtask \(2\) (\(50\%\) số điểm): \(n \leq 10^5\).
Example
Test 1
Input
5 5
1 2 6 7 3
Output
15
Note
Trong test ví dụ 1, ami sẽ chuẩn bị \(15\) công lực và dùng giáp ở ải thứ 3. Qua ải 1, anh còn \(14\) công lực. Qua ải 2, anh còn \(12\) công lực. Nhờ sử dụng giáp ở ải 3, anh chỉ mất 1 công lực và còn \(11\) công lực. Quả ải 4 và 5, anh mất thêm \(7+3=10\) công lực. Cuối cùng, ami còn đúng \(1\) công lực, vừa đủ để sống sót.
Test 2
Input
5 3
1 1 1 1 1
Output
5
Note
Trong test ví dụ 2, ami có thể dùng giáp ngay ải đầu tiên và sẽ không mất công lực nào ở ải đó. \(4\) ải còn lại tiêu hao \(4\) công lực nên ami vượt ải thành công.