QOJ.ac

QOJ

Time Limit: 10 s Memory Limit: 2048 MB Total points: 100

#2338. 美しい橋

Statistics

私たちみんなをつなぐものは何だろう? それは、しばしば橋だ。古来、人々は道路や鉄道、歩行者のために橋を造り、水を運ぶための水道橋も造ってきた。それは、不都合な地形に屈しない人類のやり方なのだ。

Arch Bridges Construction(ABC)社の専門は、ご想像のとおり、アーチ橋の建設である。この古典的な様式の橋は、橋の下の地面から伸びる橋脚によって支えられる。橋脚間のアーチが、橋の重さを隣接する橋脚へ分散させる。

problem_2338_af5f9761b646daa916cba4f04e2f05b7.png

ローマ式アーチ橋の例。出典:Wikimedia Commons

ABC が造る橋の橋脚は、不規則な間隔で配置されることが多い。見た目のため、ABC の橋は図 B.1 のように必ず半円形のアーチを使う。ただし、橋のアーチは地面に接してもよいが、地面より下に入り込むことはできない。このため、実現できない橋脚配置もある。

problem_2338_c39ea985324a74f3662c1f7d1d79ab66.png

(a) 距離 $d$ だけ離れた隣接する橋脚は、半径 $r=d/2$ の半円形アーチで結ばれる。

(b) 不正な橋脚配置(アーチは地面より下に入り込めない)。

(c) 入力例 1 に対応する橋。

図 B.1:橋の例。

地面の形状と希望する橋の高さ $h$ が与えられたとき、アーチ橋の造り方は通常いくつもある。地面の形状を、$n$ 個の主要点 $(x_1,y_1),(x_2,y_2),\ldots,(x_n,y_n)$ で表される区分線形関数としてモデル化する。点の $x$ 座標は橋に沿った位置、$y$ 座標はその位置の地面の海抜高度である。最初と最後の橋脚はそれぞれ最初と最後の主要点に造る必要があり、途中の橋脚もこれらの主要点にしか造れない。橋の費用は、橋脚の費用(その高さに比例する)とアーチの費用(使用材料の量に比例する)の合計である。したがって、高さが $h_1,\ldots,h_k$ の $k$ 本の橋脚を持ち、隣り合う橋脚の水平距離が $d_1,\ldots,d_{k-1}$ である橋の総費用は

$$\alpha\cdot\sum_{i=1}^{k}h_i+\beta\cdot\sum_{i=1}^{k-1}d_i^2$$

となる。ここで $\alpha$ と $\beta$ は与えられる定数である。ABC はそれぞれの橋を可能な限り低い費用で建設したい。

入力

入力の最初の行には 4 つの整数 $n,h,\alpha,\beta$ が含まれる。$n$($2\le n\le 10^4$)は地面の形状を表す点の数、$h$($1\le h\le 10^5$)は希望する橋の海抜高度、$\alpha,\beta$($1\le\alpha,\beta\le 10^4$)は前述の費用係数である。続く $n$ 行のうち $i$ 行目には、地面の形状を表す 2 つの整数 $x_i,y_i$($0\le x_1<x_2<\ldots<x_n\le 10^5$ かつ $0\le y_i<h$)が含まれる。

出力

海抜高度 $h$ で、水平位置 $x_1$ から $x_n$ まで橋を造る最小費用を出力せよ。そのような橋を造ることが不可能な場合は impossible を出力せよ。

入出力例

入力 1

5 60 18 2
0 0
20 20
30 10
50 30
70 20

出力 1

6460

入力 2

4 10 1 1
0 0
1 9
9 9
10 0

出力 2

impossible

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.