trang chủ / đề bài / thhv19_cvp_10_a

Dãy nhị phân

Đề bài

Mô tả

Cho một dãy nhị phân a gồm N bit a[1],a[2],…,a[N] và một dãy nhị phân b gồm M bit b[1],b[2],…,b[M]. Hãy tính giá trị của biểu thức sau đây:

max1≤i≤N−M+1∑i≤j≤i+M−1(a[j]×b[j−i+1])

Yêu cầu: Tính giá trị lớn nhất của biểu thức trên.

Dữ liệu vào

  • Dòng đầu tiên ghi hai số N và M (1≤M≤N≤100000).
  • Dòng hai gồm N phần tử của dãy a, mỗi số có giá trị 0 hoặc 1, phân cách với nhau bởi dấu cách.
  • Dòng cuối gồm M phần tử của dãy b, mỗi số có giá trị 0 hoặc 1, phân cách với nhau bởi dấu cách.

Dữ liệu ra

In ra giá trị của biểu thức cần tính.

Ràng buộc

  • 1≤M≤N≤100000.
  • a[j],b[k]∈{0,1}.

Ví dụ

Input Output Giải thích
10 6
1 1 0 1 0 0 0 1 0 1
0 0 1 1 0 1
2 Chỉ có b[3],b[4],b[6] bằng 1 nên tổng ứng với i là a[i+2]+a[i+3]+a[i+5]. Với i=1,2,3,4,5 các tổng lần lượt là 1,1,1,0,2. Giá trị lớn nhất là 2 (tại i=5).
5 5
1 0 1 1 0
1 1 1 0 0
2 Ví dụ bổ sung (không có trong đề gốc). M=N nên chỉ có i=1: tổng bằng a[1]+a[2]+a[3]=2.
6 2
1 0 0 0 0 1
1 1
1 Ví dụ bổ sung (không có trong đề gốc). Đoạn a[i..i+M−1] không được vòng từ cuối dãy về đầu dãy, nên không có đoạn nào chứa cả a[6] và a[1].

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0