Bedao Mini Contest 22 - Đếm đi các bạn ơiiii
Xem dạng PDF
Gửi bài giải
Điểm:
0,10 (OI)
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
256M
Input:
stdin
Output:
stdout
Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch
Cho dãy số gồm ~n~ số nguyên dương ~a_1, a_2, \ldots, a_n~. Hãy đếm số cặp (~i~, ~j~) thỏa mãn:
~1 \le i < j \le n~.
~j - i > 5~.
~|a_i - a_j|~ chia hết cho ~23~.
Input
Dòng đầu tiên chứa một số nguyên dương ~n~ (~1 \le n \le 2 \cdot 10^5~).
Dòng thứ hai gồm ~n~ số nguyên dương mô tả dãy số ~a_1, a_2, \ldots, a_n~ (~1 \le a_i \le 10^9~, ~1 \le i \le n~).
Output
In ra một số nguyên duy nhất là số cặp (~i~, ~j~) thỏa mãn yêu cầu đề bài.
Scoring
| Subtask | Điểm | Giới hạn |
|---|---|---|
| 1 | ~40~ | ~n \le 1000~ |
| 2 | ~60~ | Không có ràng buộc gì thêm |
Sample Input 1
10
1 24 25 4 30 15 3 1 24 2
Sample Output 1
5
Notes
Trong ví dụ, các cặp số (~i~, ~j~) thỏa mãn là:
(~1~, ~8~)
(~1~, ~9~)
(~2~, ~8~)
(~2~, ~9~)
(~3~, ~10~)

Bình luận
include<bits/stdc++.h>
define ll long long
define N 1000000
define buff iosbase::syncwith_stdio(false); cin.tie(0); cout.tie(0);
using namespace std; ll n; ll a[N]; ll c[25]; int main() { cin>>n; for(int i=1; i<=n; i++) cin>>a[i]; ll kq=0; for(int i=7; i<=n; i++) { c[a[i-6]%23]++; ll x=a[i]%23; kq+=c[x]; } cout<<kq; return 0; }
*
các số |ai-aj| chia hết cho 23 khi ai%23=aj%23
dùng mảng đếm lưu giá trị vị trí + binary search
bài này có thể có nhiều cách
mẫu cách giải hướng trên:
lưu vào từ điển của dư k list các chỉ số mà a[i] % 23 = k
duyệt list trong từ điển: với mỗi giá trị idx trong list đã sắp tăng dần, tìm kiếm nhị phân idx2 mà idx2 >= idx - 5
cộng vào kết quả cnt += (idx2 - 1)
thực hiện trong tối đa là O(23n log n)
.
Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.
https://ideone.com/PQw1gp co the sd mang danh dau, fenwick tree, segment tree thay the map
tại sao 1,8 lại thỏa v mn
1 - 1 = 0 chia hết cho 23
Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.
Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.
help!!!!!! ai giải thích giúp tui cái ví dụ được không? tui đọc không có hiểu
cái ví dụ là trường hợp 1 là vị trí thứ 1 với vị trí thứ 8 có hiệu là |1-24|=23 chia hết cho 3 tương tự với trường hợp 2 3 4 5 cũng vậy
bài này có special tests ko z? mình làm đc có 36/40 tests :<
https://ideone.com/uHxq9o
code tk
Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.
Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.