Hi. Today i tried to solve 598F - Длина разреза. There is an editorial. However as a pupil i did not get anything from that. So any idea would be appreciated how to solve it. Thank you in advance.
# | User | Rating |
---|---|---|
1 | tourist | 4009 |
2 | jiangly | 3821 |
3 | Benq | 3736 |
4 | Radewoosh | 3631 |
5 | jqdai0815 | 3620 |
6 | orzdevinwang | 3529 |
7 | ecnerwala | 3446 |
8 | Um_nik | 3396 |
9 | ksun48 | 3388 |
10 | gamegame | 3386 |
# | User | Contrib. |
---|---|---|
1 | cry | 164 |
1 | maomao90 | 164 |
3 | Um_nik | 163 |
4 | atcoder_official | 161 |
5 | -is-this-fft- | 158 |
6 | awoo | 157 |
7 | adamant | 156 |
8 | TheScrasse | 154 |
8 | nor | 154 |
10 | Dominater069 | 153 |
Hi. Today i tried to solve 598F - Длина разреза. There is an editorial. However as a pupil i did not get anything from that. So any idea would be appreciated how to solve it. Thank you in advance.
Name |
---|
We basically need to find the length of the common part between a line AB and a polygon P.
First for each line XY in polygon P, compute the intersection point between AB and XY.
These are the points where the line either enters the polygon or leaves the polygon.
Sort these points according to their order on the line (based on their distance from A or distance from B).
Your answer is the sum of distance between each Entering point and its immediate next Leaving Point in this order.
This is the basic idea. But the implementation can be quite tricky, since vertex points may occur twice as intersection points and 180-degree angles are allowed in the input. If you can't figure it out on your own, just look into someone else's code.