trang chủ / đề bài / polyline

Phân tích đường gấp khúc

Đề bài

Mô tả

Xét các hàm số có dạng

y(x)={0nếu k·x+b≤0k·x+bnếu k·x+b>0

trong đó k và b là hai số nguyên cho trước.

Cho n hàm số y1(x),y2(x),…,yn(x) thuộc dạng trên. Đặt

s(x)=y1(x)+y2(x)+⋯+yn(x).

Có thể chứng minh được rằng đồ thị của s(x) là một đường gấp khúc. Hãy đếm số góc khác 180∘ trên đồ thị này, tức là số điểm mà tại đó đường gấp khúc thực sự đổi hướng.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n — số lượng hàm số.
  • n dòng tiếp theo, dòng thứ i chứa hai số nguyên ki và bi mô tả hàm số thứ i.

Dữ liệu ra

In ra một số nguyên duy nhất là số góc khác 180∘ trên đồ thị của s(x).

Ràng buộc

  • 1≤n≤105
  • −109≤ki,bi≤109

Ví dụ

Input Output Giải thích
1
1 0
1 s(x)=y1(x) bằng 0 với x≤0 và bằng x với x>0. Đồ thị đổi hướng đúng một lần, tại x=0.
3
1 0
0 2
-1 1
2 Hàm thứ hai có k=0,b=2 nên luôn bằng hằng số 2, không tạo ra điểm gãy nào. Hai hàm còn lại đổi hướng tại x=0 và x=1, cho 2 góc.
3
-2 -4
1 7
-5 1
3 Ba hàm đổi hướng tại x=−2, x=−7 và x=15. Ba giá trị này đôi một khác nhau nên đáp số là 3.

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