trang chủ / bài tập / ribpaint

Tô màu dải ruy băng

Đề bài

Mô tả

Một dải ruy băng gồm n ô, đánh số từ 1 đến n từ trái sang phải. Ban đầu ô thứ i mang màu i, và độ rực rỡ của mọi ô đều bằng 0.

Khi dùng cọ màu x quét lên một ô đang mang màu y, ô đó đổi sang màu x và độ rực rỡ của nó tăng thêm |xy|.

Bạn cần thực hiện m thao tác, mỗi thao tác thuộc một trong hai loại:

  1. 1 l r x — quét cọ màu x lên toàn bộ các ô từ l đến r.
  2. 2 l r — hỏi tổng độ rực rỡ của các ô từ l đến r.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên nm.
  • m dòng tiếp theo, mỗi dòng bắt đầu bằng số nguyên type:
    • Nếu type=1, dòng đó còn ba số nguyên l, r, x.
    • Nếu type=2, dòng đó còn hai số nguyên l, r.

Dữ liệu ra

Với mỗi thao tác loại 2, in ra một dòng chứa tổng độ rực rỡ của đoạn được hỏi.

Ràng buộc

  • 1n,m105
  • 1type2
  • 1lrn
  • 1x108

Ví dụ

Input Output Giải thích
3 3
1 1 2 4
1 2 3 5
2 1 3
8 Màu ban đầu là [1, 2, 3], độ rực rỡ [0, 0, 0].
Sau thao tác 1: màu thành [4, 4, 3], độ rực rỡ [3, 2, 0].
Sau thao tác 2: màu thành [4, 5, 5], độ rực rỡ [3, 3, 2].
Tổng bằng 3+3+2=8.
3 4
1 1 3 4
2 1 1
2 2 2
2 3 3
3
2
1
Sau khi quét màu 4 lên cả dải, độ rực rỡ là [3, 2, 1] vì 41=3, 42=2, 43=1.
10 6
1 1 5 3
1 2 7 9
1 10 10 11
1 3 8 12
1 1 10 3
2 1 10
129 Một ô có thể được quét nhiều lần; mỗi lần quét đều cộng thêm chênh lệch màu vào độ rực rỡ của nó.

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.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0