trang chủ / đề bài / nydomino

Đô-mi-nô năm mới

Đề bài

Mô tả

Có n quân đô-mi-nô đứng trên trục số. Quân thứ i đứng tại tọa độ pi và có chiều cao li; các tọa độ thỏa mãn p1<p2<…<pn.

Khi một quân đô-mi-nô đứng tại p với chiều cao l bị đẩy sang phải, nó đổ xuống và quét qua đoạn [p,p+l] trên trục số. Nếu trong lúc đổ nó chạm vào một quân khác (quân thứ j có pj≤p+l) thì quân j cũng đổ sang phải theo đúng cơ chế đó, và phản ứng dây chuyền tiếp tục. Nói cách khác, nếu ta đang đứng ở "tầm với" hiện tại R và quân kế tiếp có tọa độ pj≤R thì quân đó đổ và tầm với được cập nhật thành max(R,pj+lj).

Có q kịch bản, mỗi kịch bản gồm hai số x và y (x<y): ta đẩy quân thứ x và muốn quân thứ y cũng đổ. Đôi khi điều này không xảy ra vì có "khoảng hụt" giữa tầm với hiện tại và quân kế tiếp. Ta được phép tăng chiều cao của một số quân đô-mi-nô (bất kỳ quân nào), mỗi lần tăng chiều cao thêm 1 tốn chi phí 1.

Với mỗi kịch bản, hãy tìm chi phí nhỏ nhất để khi đẩy quân x thì quân y chắc chắn đổ. Các kịch bản độc lập với nhau: việc tăng chiều cao trong kịch bản này không ảnh hưởng đến kịch bản khác.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n.
  • n dòng tiếp theo, dòng thứ i chứa hai số nguyên pi và li.
  • Dòng tiếp theo chứa số nguyên q.
  • q dòng tiếp theo, mỗi dòng chứa hai số nguyên xj và yj.

Dữ liệu ra

Với mỗi kịch bản, in ra một dòng chứa chi phí nhỏ nhất cần thiết. Nếu không cần chi phí nào, in ra 0.

Ràng buộc

  • 2≤n≤2·105
  • 1≤pi,li≤109 và p1<p2<…<pn
  • 1≤q≤2·105
  • 1≤xj<yj≤n

Ví dụ

Input Output Giải thích
6
1 5
3 3
4 4
9 2
10 1
12 1
4
1 2
2 4
2 5
2 6
0
1
1
2
Đẩy quân 1 (tầm với tới 1+5=6) làm quân 2 (tại 3) đổ ngay, chi phí 0. Với kịch bản đẩy quân 2 để quân 6 đổ: cần tăng chiều cao quân 3 thêm 1 và quân 5 (hoặc quân 4) thêm 1, tổng chi phí 2.
3
1 1
500000000 100
1000000000 1000000000
5
1 2
1 3
2 3
1 3
1 2
499999998
999999898
499999900
999999898
499999998
Kịch bản đẩy quân 2 để quân 3 đổ: tầm với của quân 2 là 500000000+100, còn quân 3 ở 109, nên phải bù khoảng hụt 109−(500000000+100)=499999900.

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