Эсептөө геометриясы
Вектордук көбөйтүндү, көп бурчтуктун аянты жана томпок кабык.
Дээрлик бүт олимпиадалык геометрия бир куралга курулат — вектордук (кыйшык) көбөйтүндүгө:
cross(O, A, B) = (A - O) × (B - O) = (Ax-Ox)(By-Oy) - (Ay-Oy)(Bx-Ox)
Анын белгиси O→A→B сынык сызыгы кайда бураларын айтат: плюс — саат жебесине каршы, минус — саат жебеси боюнча, нөл — үч чекит бир түз сызыкта. Ал эми модулу OAB үч бурчтугунун эселенген аянтына барабар.
Биринчи колдонулушу — каалаган көп бурчтуктун аянты («бүчүлүк формуласы»): удаалаш чокулардын кыйшык көбөйтүндүлөрүнүн суммасы.
Көп бурчтуктун аянты. Киргизиңиз: 4, андан кийин контур боюнча чокулар: 0 0, 4 0, 4 3, 0 3
4×3 тик бурчтугу 12 берет. Байкаңыз: баары БҮТҮН сандарда эсептелет — эселенген аянтты сактап, чыгарууда гана бөлөбүз. Геометриянын алтын эрежеси: мүмкүн болушунча узак бүтүн сандарда калыңыз, каталыктары бар double — эң митайым багдардын булагы.
Экинчи классика — томпок кабык: бардык чекиттерди камтыган минималдуу томпок көп бурчтук. Эндрюнун алгоритми (monotone chain): чекиттерди x боюнча иреттейбиз, «туура эмес» бурулуш берген чекиттерди ыргытып, төмөнкү чынжырды солдон оңго курабыз, андан кийин жогоркусун — оңдон солго. Иреттөөгө O(n log n).
Томпок кабык. Киргизиңиз: 6, андан кийин чекиттер: 0 0, 2 0, 1 1, 2 2, 0 2, 1 -1
Мисалда ички (1,1) чекити жоголот, саат жебесине каршы кыдыруу тартибиндеги кабыктын беш чокусу калат.
cross <= 0 шарты түз сызыктагы чекиттерди да ыргытат; коллинеардык чекиттерди калтыруу керек болсо < 0 менен алмаштырыңыз.
Тапшырма: даяр кабык боюнча анын аянтын бүчүлүк формуласы менен эсептеңиз — сабактын эки темасы бир чечимде биригет.
Сабакты өттүм деп белгилеңиз — сиз олимпиадачынын бүт жолун өттүңүз! Мындан ары — практика: маселелерди чечиңиз, мелдештерге катышыңыз жана сабактарга маалымдама катары кайрылып туруңуз. Ийгилик!