Kalubalen TopCoder Buɗe 2019: yanke kek zuwa guda shida

Kalubalen TopCoder Buɗe 2019: yanke kek zuwa guda shida
A kan hanya "Namu ya ci: TopCoder Open 2019" Ina buga matsaloli daga waƙar Algorithm (classical sports programming. A cikin awa daya da rabi kuna buƙatar magance matsaloli guda uku a Java, C#, C++ ko Python.)

1. Kek na shida

Tsara matsalar

Iyakar lokacin shine daƙiƙa 4.

Kuna da kek. Lokacin da aka duba shi daga sama, cake ɗin yana da siffar polygon (a zahiri). Ana ba ku haɗin kai a cikin integers X da Y.

Kuna da abokai biyar. Kuna so a raba kek zuwa yanki guda shida na daidai yanki (amma ba lallai bane siffa ɗaya). Tabbas, kowa zai iya yin shi a cikin yanke guda biyar, amma pro kawai zai iya yin shi a cikin yanke uku.

Nemo yanke guda uku a madaidaiciyar layi ta hanyar aya guda wanda zai raba kek zuwa sassa daidai guda shida. Buga {x, y, d1, d2, d3}, inda (x, y) shine wurin gama gari na dukkan yanke guda uku, kuma d1, d2, d3 su ne kusurwoyin da aka yanke a cikin radians.

definitionDarasi: CakeForSix
Hanyar: yanke
Siga: int[], int[] Komawa: biyu[] Sa hannu na hanya: sau biyu[] yanke (int[] x, int[] y)
(tabbatar da hanyar ku ta jama'a ce)

Bayanan kula

  • Madaidaicin shugabanci tare da axis x shine 0 (radians), kyakkyawan shugabanci tare da y-axis shine pi/2 (radians).
  • Yanke a hanyar d yayi kama da yanke a cikin pi*k+d na kowace lamba k.
  • Kuna iya fitar da kowace kwatance, ba dole ba ne su kasance daga [0, pi).
  • Mai digiri zai ƙididdige yanki na kek ɗin ku guda shida a ninki biyu. Za a karɓi amsar idan dangi ko cikakken bambanci tsakanin su bai wuce 10^(-4).
  • Hakazalika, bari X da Y su kasance mafi ƙanƙanta kuma mafi girma a cikin yankunanku guda shida da mai digiri ya ƙidaya. Sannan za a karbi amsar ku idan Y
  • (Tsarin sigar matsalar ta yi amfani da madaidaicin 1e-7 maimakon 1e-4. Don magance wannan matsala a cikin rumbun adana bayanai, an saukar da ƙayyadaddun ƙayyadaddun ƙayyadaddun ƙayyadaddun ƙayyadaddun ƙayyadaddun ƙira saboda kasancewar ƙararrakin kira waɗanda za su iya sa matsalar ba za a iya warware ta ba tare da daidaito. na 1e-7. A cikin kyakkyawar duniya, iyakoki ba sa ƙyale irin waɗannan lokuta kuma har yanzu suna buƙatar babban madaidaici, don haka warware matsalar tare da wasu haɓakar ƙididdiga na gaba ɗaya ba shi da sauƙi.)

Ƙuntatawa

  • x ya ƙunshi abubuwa 3 zuwa 50 masu haɗawa.
  • y ya ƙunshi adadin abubuwa iri ɗaya kamar x.
  • duk daidaitawa tsakanin 0 zuwa 10 wanda ya haɗa
  • x da y suna ayyana madaidaicin polygon a madaidaicin agogo.

Na asali a Turanci

Bayanin Matsala

Iyakar lokacin shine 4 seconds.

Kuna da kek. Ana gani daga sama, kek ɗin polygon ne (tsakanin) convex. Ana ba ku madaidaicin madaidaicin madaidaicin sa a cikin int[]sx da y.

Kuna da abokai biyar. Yanzu kuna son yanke biredin zuwa guda shida na yanki daidai (amma ba lallai ba ne daidai siffa). Tabbas, kowa zai iya yin hakan a cikin yanke guda biyar - amma mai gaskiya ne kawai zai iya yin shi cikin uku!

Nemo madaidaicin layi guda uku da ke wucewa ta wuri ɗaya wanda ya yanke kek zuwa manyan sassa shida daidai. Koma {x, y, d1, d2, d3}, inda (x, y) shine wurin gama gari na yanke guda uku, kuma d1, d2, d3 sune kwatancensu a cikin radians.

definition

Darasi: CakeForSix
Hanyar: yanke
Siga: int[], int[] Komawa: biyu[] Sa hannu na hanya: sau biyu[] yanke (int[] x, int[] y)
(tabbatar da hanyar ku ta jama'a ce)

Notes
- Kyakkyawan shugabanci tare da axis x shine 0 (radians), kyakkyawan shugabanci tare da y axis shine pi/2 (radians).
- Yanke a hanya d daidai yake da yanke a hanya pi*k+d ga kowace lamba k.
- Kuna iya dawo da kowace kwatance, ba dole ba ne su kasance daga [0,pi).
- Mai grader zai lissafta wuraren biredin ku guda shida a ninki biyu. Za a karɓi amsar idan dangi ko cikakken bambanci tsakanin su bai wuce 10^(-4).
- Ƙari daidai, bari X da Y su kasance mafi ƙanƙanta kuma mafi girma a cikin yankunan ku shida, kamar yadda mai digiri ya lissafta. Bayan haka, za a karɓi amsar ku idan Y <max( X + 10^ (-4), X * (1+10^ (-4))).
- (Ainihin sigar matsalar ta yi amfani da daidaitattun 1e-7 maimakon 1e-4. Don warware wannan matsala a cikin tarihin an rage madaidaicin iyaka saboda kasancewar matsalolin ƙalubalen waɗanda wataƙila ba za a iya warware aikin ba tare da daidaitaccen 1e-7. A cikin ingantacciyar duniya, ƙuntatawa ba za su ƙyale irin waɗannan lokuta ba kuma har yanzu suna buƙatar daidaito mai zurfi, ta yadda ba shi da sauƙi a magance matsalar ta hanyar inganta yawan lambobi.)

Abubuwan Tauhidi
- x zai kasance tsakanin abubuwa 3 zuwa 50, wanda ya haɗa da.
- y zai sami adadin abubuwa iri ɗaya kamar x.
- Duk haɗin kai zai kasance tsakanin 0 zuwa 10,000, wanda ya haɗa.
- x da y za su siffanta madaidaicin polygon a jere.

misalai

0)

{0, 20, 30, 50, 30, 20}
{10, 0, 0, 10, 20, 20}
Komawa:
{24.999999999437453, 9.999999999500002, 0.0, 0.7266423406817211, 2.4149503129080787}

Hexagon mai simmetric amma mara daidaituwa. Amsar misalin ta yi daidai da yanke shi cikin rabi a kwance da yin wasu guda biyu yanke tsakiyar wanda ya raba kowane yanki zuwa guda uku.

Kalubalen TopCoder Buɗe 2019: yanke kek zuwa guda shida

1)

{0, 1000, 0}
{0, 0, 1000}
Komawa:
{333.3333333331763, 333.3333333332546, 0.7853981633986264, 2.0344439357948154, 2.6779450445891753}

Dama triangle. Bugu da ƙari, za mu iya farawa da ɗaya daga cikin yanke uku tare da axis na daidaitawa.

Kalubalen TopCoder Buɗe 2019: yanke kek zuwa guda shida

2)

{40, 70, 90, 90, 50}
{30, 20, 40, 100, 60}
Komawa:
{69.79517771922892, 52.77575974637605, 2.0616329654335885, 3.637826104091601, 4.32123485812475}

Pentagon mara daidaituwa.

Kalubalen TopCoder Buɗe 2019: yanke kek zuwa guda shida

3)

{300, 400, 300, 200}
{500, 600, 700, 600}
Komawa: {299.99999999974995, 599.9999999995, 0.0, 1.107148717794088, 2.034443935795705}

Wani murabba'i ya juya digiri 45.

Kalubalen TopCoder Buɗe 2019: yanke kek zuwa guda shida

[Source]

Masu amfani da rajista kawai za su iya shiga cikin binciken. Shigadon Allah.

Na warware matsalar don

  • cikin kasa da mintuna 10

  • 10-30 minti

  • 30-60 minti

  • 1-2 hours

  • a cikin fiye da 2 hours

  • wasu

Masu amfani 42 sun kada kuri'a. Masu amfani 47 sun kaurace.

source: www.habr.com

Add a comment