Chovuta cha TopCoder Open 2019: dulani chitumbuwacho mu zidutswa zisanu ndi chimodzi

Chovuta cha TopCoder Open 2019: dulani chitumbuwacho mu zidutswa zisanu ndi chimodzi
Panjira "Zathu zomwe zidapambana: TopCoder Open 2019" Ndimasindikiza zovuta kuchokera panjira ya algorithm (mapulogalamu amasewera apamwamba. Mu ola limodzi ndi theka muyenera kuthana ndi zovuta zitatu mu Java, C #, C++ kapena Python.)

1. Pie kwa zisanu ndi chimodzi

Kupanga kwa vuto

Nthawi yake ndi 4 masekondi.

Muli ndi chitumbuwa. Mukayang'ana kuchokera pamwamba, kekeyo imakhala ndi mawonekedwe a polygon (yowoneka bwino). Mumapatsidwa ma vertices a X ndi Y integers.

Muli ndi abwenzi asanu. Mukufuna kugawa chitumbuwacho mu zidutswa zisanu ndi chimodzi za malo ofanana (koma osati mawonekedwe ofanana). Zachidziwikire, aliyense atha kuzidula kasanu, koma katswiri yekha ndi amene angachite modula katatu.

Pezani mabala atatu mumizere yowongoka kupyolera mu mfundo imodzi yomwe idzagawanitse chitumbuwacho mu magawo asanu ndi limodzi ofanana. Sindikizani {x, y, d1, d2, d3}, pomwe (x, y) ndi malo odziwika bwino pamadula onse atatu, ndipo d1, d2, d3 ndi ngodya zowongolera za mabala a ma radian.

TanthauzoKalasi: CakeForSix
Njira: kudula
Zigawo: int[], int[] Zobwerera: pawiri[] Njira siginecha: pawiri[] kudula(int[] x, int[] y)
(onetsetsani kuti njira yanu ndi yapagulu)

Mfundo

  • Mayendedwe abwino motsatira x-axis ndi 0 (ma radians), njira yabwino motsatira y-axis ndi pi/2 (radians).
  • Kudula kolowera ku d kumakhala kofanana ndi kudulidwa kwa pi*k+d pa nambala iliyonse k.
  • Mutha kutulutsa njira zilizonse, siziyenera kukhala zochokera ku [0, pi).
  • Wophunzirayo amawerengera gawo la magawo asanu ndi limodzi a keke mowirikiza. Yankho lidzalandiridwa ngati wachibale kapena kusiyana kotheratu pakati pawo kuli kochepa kuposa 10 ^(-4).
  • Mwatsatanetsatane, lolani X ndi Y akhale ang'onoang'ono komanso akulu kwambiri mwa madera anu asanu ndi limodzi owerengedwa ndi grader. Ndiye yankho lanu lidzalandiridwa ngati Y
  • (Vuto loyambirira lidagwiritsa ntchito kulondola kwa 1e-7 m'malo mwa 1e-4. Kuti athetse vutoli m'malo osungira, malire olondola adatsitsidwa chifukwa cha kupezeka kwa milandu yoyimbira yomwe ingapangitse vutolo kuti lisathetsedwe molondola. ya 1e-7. M'dziko labwino, malire salola milandu yotereyi ndipo amafunabe kulondola kwambiri, kotero kuthetsa vutoli ndi kukhathamiritsa kwa manambala sikophweka.)

Zoletsa

  • x ili ndi zinthu 3 mpaka 50 kuphatikiza.
  • y ali ndi nambala yofanana ndi x.
  • zonse zimagwirizanitsa pakati pa 0 ndi 10 kuphatikizapo
  • x ndi y amatanthawuza poligoni yopingasa munjira yopingasa.

Choyambirira mu Chingerezi

Chiwerengero Chavuto

Malire a nthawi ndi 4 masekondi.

Muli ndi keke. Kuwoneka kuchokera pamwamba, kekeyo ndi (molimba) polygon yopingasa. Mumapatsidwa ma vertices ake mu int[]sx ndi y.

Muli ndi abwenzi asanu. Tsopano mukufuna kudula keke mu zidutswa zisanu ndi chimodzi za malo ofanana (koma osati mawonekedwe ofanana). Zachidziwikire, aliyense atha kuchita izi m'madula asanu - koma katswiri wowona yekha ndi amene angachite izi katatu!

Pezani mabala atatu owongoka akudutsa pamalo omwewo omwe amadula kekeyo m'magawo asanu ndi limodzi akulu mofanana. Bweretsani {x, y, d1, d2, d3}, pamene (x, y) ndi malo odziwika bwino a mabala atatu, ndipo d1, d2, d3 ndi mayendedwe awo mu ma radian.

Tanthauzo

Kalasi: CakeForSix
Njira: kudula
Zigawo: int[], int[] Zobwerera: pawiri[] Njira siginecha: pawiri[] kudula(int[] x, int[] y)
(onetsetsani kuti njira yanu ndi yapagulu)

zolemba
- Mayendedwe abwino pa x axis ndi 0 (ma radians), njira yabwino motsatira y axis ndi pi/2 (radians).
- Kudula kolowera d ndikofanana ndi kudulidwa kolowera pi*k+d pa nambala iliyonse k.
- Mutha kubweza njira zilizonse, siziyenera kukhala zochokera ku [0,pi).
- Wopanga girediyo amawerengera magawo asanu ndi limodzi a keke yanu mowirikiza. Yankho lidzalandiridwa ngati wachibale kapena kusiyana kotheratu pakati pawo kuli kochepa kuposa 10 ^(-4).
- Ndendende, lolani X ndi Y akhale ang'onoang'ono komanso akulu kwambiri mwa madera anu asanu ndi limodzi, monga momwe amawerengera ndi grader. Kenako, yankho lanu livomerezedwa ngati Y <max( X + 10^(-4), X * (1+10^(-4)) ).
- (Vuto loyambirira lidagwiritsa ntchito 1e-7 molondola m'malo mwa 1e-4. Kuti athetse vutoli muzosungirako malire olondola adatsitsidwa chifukwa cha kukhalapo kwa zovuta zomwe zimapangitsa kuti ntchitoyi ikhale yosasinthika ndi 1e-7 molondola. M'dziko labwino zopinga sizingalole milandu yotereyi ndipo zimafunikabe kulondola kwambiri, kotero kuti sikophweka kuthetsa vutoli pogwiritsa ntchito kukhathamiritsa kwa manambala.)

Zovuta
- x adzakhala ndi zinthu pakati pa 3 ndi 50, kuphatikiza.
-y adzakhala ndi chiwerengero chofanana ndi x.
- Zogwirizanitsa zonse zidzakhala pakati pa 0 ndi 10,000, kuphatikizapo.
- x ndi y afotokoza polygon yopingasa motsatana.

zitsanzo

0)

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

Hexagon yofanana koma yosasinthika. Yankho lachitsanzo limafanana ndi kulidula pakati mopingasa ndi kupanga macheka ena awiri pakati omwe amagawaniza chidutswa chilichonse kukhala zidutswa zitatu.

Chovuta cha TopCoder Open 2019: dulani chitumbuwacho mu zidutswa zisanu ndi chimodzi

1)

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

Makona atatu akumanja. Apanso, titha kuyamba ndi kudulidwa kumodzi mwamagawo atatu motsatira ma axis of symmetry.

Chovuta cha TopCoder Open 2019: dulani chitumbuwacho mu zidutswa zisanu ndi chimodzi

2)

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

Pentagon yosakhazikika.

Chovuta cha TopCoder Open 2019: dulani chitumbuwacho mu zidutswa zisanu ndi chimodzi

3)

Chizindikiro:
Chizindikiro:
Kubwerera: {299.99999999974995, 599.9999999995, 0.0, 1.107148717794088, 2.034443935795705 }

Sikweya yozungulira madigiri 45.

Chovuta cha TopCoder Open 2019: dulani chitumbuwacho mu zidutswa zisanu ndi chimodzi

[Kuchokera]

Ogwiritsa ntchito olembetsedwa okha ndi omwe angatenge nawo gawo pa kafukufukuyu. Lowani muakauntichonde.

Ndinathetsa vuto

  • pasanathe mphindi 10

  • Mphindi 10-30

  • Mphindi 30-60

  • Maola 1-2

  • m'maola opitilira awiri

  • zina

Ogwiritsa ntchito 42 adavota. Ogwiritsa 47 adakana.

Source: www.habr.com

Kuwonjezera ndemanga