Dãy Cấp Số Cộng - VNOJ: VNOI Online Judge
Có thể bạn quan tâm
Dãy cấp số cộng
Xem dạng PDF Gửi bài giải Danh sách bài nộp Bài nộp tốt nhất Điểm: 1,33 (OI) Giới hạn thời gian: 0.9s Giới hạn bộ nhớ: 512M Input: stdin Output: stdout Nguồn bài: Sưu tầm Dạng bài Ad hoc (không thuộc thể loại nào), Range Minimum Query Ngôn ngữ cho phép C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, ScratchMột dãy cấp số cộng là một dãy số mà 2 cặp phần tử liên tiếp bất kỳ có hiệu bằng nhau và khác 0. Trường hợp dãy số chỉ gồm 2 số khác nhau vẫn tính là một dãy cấp số cộng
Ví dụ:
- 2, 5 là dãy cấp số cộng.
- 8, 3 là dãy cấp số cộng.
- 1, 2, 3, 4, 5 là dãy cấp số cộng.
- 11, 8, 5, 2 là dãy cấp số cộng.
- 1, 2, 4, 5, 7 không phải là dãy cấp số cộng.
Cho một dãy số A gồm N số nguyên dương. Cho Q truy vấn dạng (x, y). Mỗi truy vấn yêu cầu kiểm tra xem đoạn từ x tới y có phải là hoán vị của một dãy cấp số cộng không.
Input
- Dòng đầu chứa 2 số nguyên ~N~, ~Q~.
- Số thứ ~i~ trong ~N~ số ở dòng thứ 2 là ~A_{i}~.
- Dòng thứ ~i~ trong ~Q~ dòng tiếp theo chứa 2 số nguyên ~x~, ~y~ mô tả truy vấn thứ ~i~.
Output
Gồm ~Q~ dòng.
- Dòng thứ ~i~ trong ~Q~ dòng sẽ trả lời cho truy vấn thứ ~i~.
- In ra YES nếu đoạn từ ~x~ tới ~y~ là hoán vị của một dãy cấp số cộng. Ngược lại thì ghi ra NO.
Giới hạn
11 test có ~N~, ~Q \le 1000~.
10 test có ~N \le 1000~, ~Q \le 10^{6}~.
10 test có ~N \le 10^{5}~, ~Q \le 10^{5}~.
~A_{i} \le 10^{9}~
Sample Input
5 2 1 3 2 5 4 1 5 2 4Sample Output
YES NOBình luận
Hãy đọc nội quy trước khi bình luận.- 4
thieen đã bình luận lúc 1, Tháng 11, 2025, 14:55
helo
- 35
RussVN123 đã bình luận lúc 15, Tháng 6, 2024, 17:28 ← chỉnh sửa →
Spoil cho bài này
Để làm bài này thì cần xét các yếu tố sau 1.tổng đoạn L-R phải bằng cấp số cộng r-l+1 phần tử với u1=minL-R và u2=maxL-R 2.Các phần tử chỉ xuất hiện đúng 1 lần duy nhất -> để làm thì chỉ cần tạo mảng b là vị trí gần nhất bên trái có giá trị = a[i] . Lấy max L-R mảng b thì nếu lớn hơn bằng l thì sẽ có trùng . cuối cùng.(a[i]-minLR)%công sai =0 (l<=i<=r). Nghĩa là kiểm tra mỗi a[i] có thể được tạo thành từ minLR không , vì các số tạo thành cấp số cộng phải bằng minLR + d*x. Để kiểm tra cái trên ta cần phân tích tiếp: (a[i]-minLR) % công sai =0 => a[i]%công sai =minLR % công sai. Ta có thể kiểm tra bằng cách lấy đại 1 số trong đoạn L R và check ( đây là đk thứ 1 ). Nhưng mà 1 số đúng thì ko có nghĩa cả dãy đúng. Nên ta cần kiểm tra nhanh các số còn lại ( gọi công sai là d) : a[i]%d=a[i+1]%d=a[i+2]%d=...=a[i+n]%d. Tiếp tục biến đổi thì a[i]%d=a[i+1]%d => (a[i]-a[i+1])%d =0 ( tương tự là cặp a[i+1] và a[i+2]). Như vậy cần check xem các abs(a[i]-a[i+1])có chia hết d hay không và cần kiểm r-l cặp có i trong khoảng L->R-1. Để kiểm nhanh thì chỉ cần lấy GCD là được vì nếu có thỏa hết thì các abs sẽ luôn là bội của d .
- -12
chithien19112008 đã bình luận lúc 17, Tháng 2, 2024, 9:27 ← chỉnh sửa →
segmentree co ban
Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.
- -5
wipad0310 đã bình luận lúc 2, Tháng 2, 2024, 17:23
Bài này làm được bằng segment tree không vậy mọi người :> Ý tưởng của mình là tìm giá trị lớn nhất và lớn nhất của đoạn cần truy vấn, sau đó tính tổng bằng công thức cấp số cộng và tổng của đoạn đó (mảng cộng dồn). Tất nhiên là mình vẫn chưa làm được :(
Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.
- 0
RussVN123 đã bình luận lúc 15, Tháng 6, 2024, 17:31 ← chỉnh sửa →
Được bạn ạ. Bạn có thể xem sol của mình bên trên.
- -36
chunguyen2k8 đã bình luận lúc 1, Tháng 2, 2024, 1:53
Ae downvote mk đi :))
Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.
- -5
yuriFiona_ đã bình luận lúc 1, Tháng 2, 2024, 2:25 ← chỉnh sửa →
anh nguyen ton noi chi phai
Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.
- -13
Winboy423minhkhoi đã bình luận lúc 23, Tháng 7, 2023, 2:16
oh god, dính bug 2 test, fix mất 15 phút cuộc đời
Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.
- -4
dawacola đã bình luận lúc 1, Tháng 3, 2024, 11:12
Bài này làm như nào vậy bạn
- -23
tuanminhdt đã bình luận lúc 29, Tháng 6, 2023, 3:51 ← chỉnh sửa →
*đã xóa
Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.
- -99
nthquan_1505 đã bình luận lúc 27, Tháng 3, 2023, 2:51
Bài dễ vl
Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.
Từ khóa » Cấp Số Cộng Python
-
Lập Trình Python - Viết Chương Trình Kiểm Tra Cấp Số Cộng - YouTube
-
Xem Lập Trình Python - Viết Chương Trình Kiểm Tra Cấp Số Cộng
-
Viết Chương Trình Kiểm Tra 1 Dãy Số Được Nhập Từ Bàn Phím Có ...
-
Tính Tổng Cấp Số Cộng - Branium Academy
-
Vòng Lặp For Trong Python - Phần 2
-
Bài Tập Python Có Lời Giải - Học Lập Trình Python - VietTuts
-
In Ra Màn Hình Code Python Các Số Thuộc Cấp Số Cộng, Khi Biết Số ...
-
Viết Hàm đệ Quy Python Tính Tổng S = 1 + 2 + 3 + 4 + 5 ... + N
-
Kiểm Tra Dãy Số Thõa Mãn Tính Chất Của Cấp Số Nhân Hay Số Cộng Hay ...
-
Vòng Lặp For Trong Python
-
Hơn 100 Bài Tập Python Có Lời Giải (code Mẫu)
-
Bài Tập Code Python Đơn Giản Có Lời Giải - Phần 2
-
Bài Tập Cấp Số Cộng - Cấp Số Nhân - O₂ Education
-
1. Bạn Hãy Viết Chương Trình Nhập Từ Bàn Phím 3 Số Thực Bất Kỳ Và ...
.
Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.
bạn cho mình xin link facebook đc không ạ
Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.
Code mình đây, nếu bạn muốn tham khảo:
gdfgdgdfgdg
Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.