Мушкилоти TopCoder Open 2019: пирогро ба шаш қисм буред

Мушкилоти TopCoder Open 2019: пирогро ба шаш қисм буред
Дар пои "Мо бурдем: TopCoder Open 2019" Ман мушкилотро аз треки Алгоритм нашр мекунам (барномасозии классикии варзиш. Дар давоми якуним соат шумо бояд се масъаларо дар Java, C#, C++ ё Python ҳал кунед.)

1. Пироҷ барои шаш

Тартиб додани масъала

Мӯҳлати вақт 4 сония аст.

Шумо пирог доред. Вақте ки аз боло дида мешавад, торт шакли бисёркунҷаи барҷаста (қатъиян) дорад. Ба шумо координатаҳои қуллаҳо дар ададҳои бутуни X ва Y дода мешаванд.

Шумо панҷ дӯст доред. Шумо мехоҳед пирогро ба шаш порчаи майдони баробар тақсим кунед (вале на ҳатман як шакл). Албатта, ҳар кас метавонад онро дар панҷ буриш анҷом диҳад, аммо танҳо як профессионал метавонад онро дар се буриш анҷом диҳад.

Се буришро дар хати рост тавассути як нуқта ёбед, ки пирогро ба шаш қисмати баробар тақсим мекунад. {x, y, d1, d2, d3} чоп кунед, ки дар он (x, y) нуқтаи умумии ҳар се буриш ва d1, d2, d3 кунҷҳои самти буришҳо дар радиан мебошанд.

МуайянСинф: CakeForSix
Усули: буридан
Параметрҳо: int[], int[] Бозмегардонад: double[] Имзои усул: double[] cut(int[] x, int[] y)
(боварӣ ҳосил кунед, ки усули шумо оммавӣ аст)

ёддошт

  • Самти мусбати қад-қади меҳвари x 0 (радиан), самти мусбат дар меҳвари y pi/2 (радиан) аст.
  • Буриш дар самти d ба буриш дар самти pi*k+d барои ҳар адади бутуни k монанд аст.
  • Шумо метавонед ҳама гуна самтҳоро бароваред, онҳо набояд аз [0, pi) бошанд.
  • Грейдер майдони шаш дона торти шуморо ду маротиба ҳисоб мекунад. Агар фарки нисбй ё мутлаки байни онхо аз 10^(-4) кам бошад, чавоб кабул карда мешавад.
  • Аниқтараш, бигзор X ва Y хурдтарин ва калонтарин аз шаш минтақаи шумо бошад, ки аз ҷониби грейдер ҳисоб карда шудааст. Пас ҷавоби шумо қабул карда мешавад, агар Y
  • (Дар нусхаи аслии масъала ба ҷои 1e-7 дақиқии 1e-4 истифода мешуд. Барои ҳалли ин мушкилот дар бойгонӣ, маҳдудияти дақиқ аз сабаби мавҷудияти ҳолатҳои занг, ки эҳтимолан мушкилотро бо дақиқ ҳалнашаванда мегардонад, паст карда шуд. аз 1e-7. Дар ҷаҳони идеалӣ, маҳдудиятҳо чунин ҳолатҳоро иҷозат намедиҳанд ва то ҳол дақиқии баландро талаб мекунанд, бинобар ин ҳалли мушкилот бо баъзе оптимизатсияи умумии ададӣ осон нест.)

Маҳдудиятҳо

  • x аз 3 то 50 элементро дар бар мегирад.
  • y ҳамон миқдори элементҳоро дар бар мегирад, ки x.
  • ҳама координатҳо аз 0 то 10 бо назардошти
  • x ва y бисёркунҷаи барҷастаро дар самти муқобили ақрабаки соат муайян мекунанд.

Асли бо забони англисӣ

Изҳороти мушкилот

Маҳдудияти вақт 4 сония аст.

Шумо торт доред. Аз боло дида мешавад, торт як полигон (қатъиян) барҷаста аст. Ба шумо координатаҳои қуллаҳои он дар int[]sx ва y дода мешаванд.

Шумо панҷ дӯст доред. Шумо ҳоло мехоҳед тортро ба шаш дона майдони баробар буред (вале на ҳатман шакли якхела). Албатта, ҳар кас метавонад ин корро дар панҷ буриш анҷом диҳад - аммо танҳо як профессори ҳақиқӣ ин корро дар се кор карда метавонад!

Се буриши хати ростро ёбед, ки аз як нуқта мегузарад, ки тортро ба шаш қисмати якхелаи калон буридаанд. Бозгашти {x, y, d1, d2, d3}, ки дар он (x, y) нуқтаи умумии се буриш ва d1, d2, d3 самтҳои онҳо дар радиан мебошанд.

Муайян

Синф: CakeForSix
Усули: буридан
Параметрҳо: int[], int[] Бозмегардонад: double[] Имзои усул: double[] cut(int[] x, int[] y)
(боварӣ ҳосил кунед, ки усули шумо оммавӣ аст)

Заметки
— Самти мусбати қад-қади меҳвари x 0 (радиан), самти мусбат дар меҳвари y pi/2 (радиан) аст.
— Буридан дар самти d бо буриши самти pi*k+d барои ҳар адади бутуни k ҳамон аст.
— Шумо метавонед ҳама гуна самтҳоро баргардонед, онҳо набояд аз [0,pi) бошанд.
— Грейдер майдони шаш пораи торти шуморо ду маротиба ҳисоб мекунад. Агар фарки нисбй ё мутлаки байни онхо аз 10^(-4) кам бошад, чавоб кабул карда мешавад.
— Аниқтараш, бигзор X ва Y хурдтарин ва калонтарин аз шаш минтақаи шумо бошанд, тавре ки грейдер ҳисоб кардааст. Пас, ҷавоби шумо қабул карда мешавад, агар Y < max( X + 10^(-4), X * (1+10^(-4)) ).
— (Дар нусхаи аслии масъала ба ҷои 1e-7 дақиқии 1e-4 истифода шудааст. Барои ҳалли ин мушкилот дар бойгонӣ маҳдудияти дақиқ аз сабаби мавҷудияти ҳолатҳои мушкилот, ки эҳтимолан вазифаро бо дақиқии 1e-7 ҳалнашаванда мегардонад, паст карда шуд. Дар ҷаҳони идеалӣ маҳдудиятҳо ба чунин ҳолатҳо иҷозат намедиҳанд ва то ҳол дақиқии баландро талаб мекунанд, бинобар ин ҳалли мушкилот тавассути оптимизатсияи умумии рақамӣ осон нест.)

Маҳдудиятҳо
- x дорои аз 3 то 50 элемент, аз ҷумла.
— y ҳамон адад элементҳои x хоҳад дошт.
— Ҳама координатҳо аз 0 то 10,000, аз ҷумла, хоҳанд буд.
— x ва y бисёркунҷаи барҷастаро бо тартиби муқобили ақрабаки соат тасвир мекунанд.

намунаи

0)

{0, 20, 30, 50, 30, 20}
{10, 0, 0, 10, 20, 20}
Бармегардад:
{24.999999999437453, 9.999999999500002, 0.0, 0.7266423406817211, 2.4149503129080787 }

Шашкунҷаи симметрӣ, вале номунтазам. Ҷавоби мисол ба буридани он ба таври уфуқӣ ва ду буриши дигар аз марказ, ки ҳар як порчаро ба се қисм тақсим мекунад, мувофиқ аст.

Мушкилоти TopCoder Open 2019: пирогро ба шаш қисм буред

1)

{0, 1000, 0}
{0, 0, 1000}
Бармегардад:
{333.3333333331763, 333.3333333332546, 0.7853981633986264, 2.0344439357948154, 2.6779450445891753 }

Секунҷаи рост. Боз, мо метавонем бо яке аз се буриш дар меҳвари симметрия оғоз кунем.

Мушкилоти TopCoder Open 2019: пирогро ба шаш қисм буред

2)

{40, 70, 90, 90, 50}
{30, 20, 40, 100, 60}
Бармегардад:
{69.79517771922892, 52.77575974637605, 2.0616329654335885, 3.637826104091601, 4.32123485812475 }

Панҷкунҷаи номунтазам.

Мушкилоти TopCoder Open 2019: пирогро ба шаш қисм буред

3)

{300, 400, 300, 200}
{500, 600, 700, 600}
Бозгашт: {299.99999999974995, 599.9999999995, 0.0, 1.107148717794088, 2.034443935795705 }

Як мураббаъ 45 дараҷа гардиш кард.

Мушкилоти TopCoder Open 2019: пирогро ба шаш қисм буред

[Сарчашма]

Танҳо корбарони сабтиномшуда метавонанд дар пурсиш иштирок кунанд. даромад, Лутфан.

Ман мушкилотро барои

  • дар камтар аз 10 дақиқа

  • 10-30 дақиқаҳо

  • 30-60 дақиқаҳо

  • Соатҳои 1-2

  • дар зиёда аз 2 соат

  • дигар

42 корбар овоз доданд. 47 корбар худдорӣ карданд.

Манбаъ: will.com

Илова Эзоҳ