TopCoder Vhura 2019 dambudziko: cheka pie kuita zvidimbu zvitanhatu

TopCoder Vhura 2019 dambudziko: cheka pie kuita zvidimbu zvitanhatu
Mutsoka "Yedu yakahwina: TopCoder Vhura 2019" Ini ndinoburitsa matambudziko kubva kualgorithm track (classical sports programming. Muawa imwe nehafu unoda kugadzirisa matambudziko matatu muJava, C#, C++ kana Python.)

1. Pie yechitanhatu

Kugadzirwa kwedambudziko

Nguva yakatarwa ndeye 4 seconds.

Une pai. Kana ichitariswa kubva kumusoro, keke rine chimiro che (chaizvo) convex polygon. Iwe unopihwa zvinorongeka zve vertices mu X uye Y nhamba.

Une shamwari shanu. Iwe unoda kupatsanura pie muzvikamu zvitanhatu zvenzvimbo yakaenzana (asi kwete hazvo chimiro chakafanana). Ehe, chero munhu anogona kuzviita mukucheka zvishanu, asi chete pro anogona kuzviita mukucheka katatu.

Tsvaga zvidimbu zvitatu mumitsara yakatwasuka kuburikidza nechinhu chimwe chinoparadzanisa pie muzvikamu zvitanhatu zvakaenzana. Dhinda {x, y, d1, d2, d3}, apo (x, y) inzvimbo inowanzoitika pakucheka kwese kutatu, uye d1, d2, d3 ndiwo makona ekwakachekwa mumaradians.

tsananguroKirasi: CakeForSix
Nzira:kucheka
Paramita: int[], int[] Inodzosa: kaviri[] Nzira siginicha: kaviri[] cheka(int[] x, int[] y)
(iva nechokwadi chekuti nzira yako ndeyeruzhinji)

Notes

  • Iyo yakanaka kutungamira padyo ne x-axis ndeye 0 (maradians), iyo yakanaka kutungamira padyo ney-axis ndipi/2 (radians).
  • Kuchekwa mu d direction kwakafanana nekucheka mupi*k+d direction yechero nhamba k.
  • Iwe unogona kuburitsa chero nzira, haifanirwe kunge ichibva ku [0, pi).
  • Iyo giredhi ichaverenga nzvimbo yezvimedu zvako zvitanhatu zvekeke mune zvakapetwa kaviri. Mhinduro inogamuchirwa kana mutsauko weukama kana kuti wakakwana pakati pavo uri pasi pe10 ^(-4).
  • Zvakanyanya, rega X uye Y ive idiki uye yakakura pane yako nzvimbo nhanhatu dzakaverengerwa negiredhi. Ipapo mhinduro yako ichagamuchirwa kana Y
  • (Iyo yekutanga vhezheni yedambudziko yakashandisa kurongeka kwe1e-7 pachinzvimbo che1e-4. Kugadzirisa dambudziko iri mudura, muganho chaiwo wakaderedzwa nekuda kwekuvapo kwemakesi ekufona angangoita kuti dambudziko risagadziriswe nemazvo. ye1e-7. Munyika yakanaka, miganhu haitenderi nyaya dzakadaro uye ichiri kuda kurongeka kwepamusoro, saka kugadzirisa dambudziko nekumwe kugadzirisa kwenhamba hakusi nyore.)

Zvibvumirano

  • x ine kubva pa3 kusvika ku50 zvinhu zvinosanganisirwa.
  • y ine nhamba yezvikamu zvakafanana ne x.
  • zvese zvinongedzo pakati pe0 ne10 zvinosanganisira
  • x uye y vanotsanangura convex polygon nenzira inopesana newachi.

Original in English

Dambudziko Chirevo

Nguva yakatarwa ndeye 4 seconds.

Une keke. Kuonekwa kubva kumusoro, keke i (yakanyatso) convex polygon. Iwe unopihwa kurongeka kwema vertices ayo mu int[]sx uye y.

Une shamwari shanu. Iwe zvino unoda kucheka keke muzvikamu zvitanhatu zvenzvimbo yakaenzana (asi kwete zvakaenzana chimiro). Ehe, chero munhu anogona kuzviita mumatanho mashanu - asi chete pro yechokwadi anogona kuzviita mumatatu!

Tsvaga mitsetse mitatu yakatwasuka ichipfuura nepanzvimbo imwechete inocheka keke kuita zvikamu zvitanhatu zvakakura zvakaenzana. Dzoka {x, y, d1, d2, d3}, apo (x, y) ndiyo nzvimbo inowanzoitika yezvichekwa zvitatu, uye d1, d2, d3 ndiwo maitiro avo mumaradhi.

tsananguro

Kirasi: CakeForSix
Nzira:kucheka
Paramita: int[], int[] Inodzosa: kaviri[] Nzira siginicha: kaviri[] cheka(int[] x, int[] y)
(iva nechokwadi chekuti nzira yako ndeyeruzhinji)

Notes
-Nhungamiro yakanaka padivi pe x axis i0 (maradians), gwara rakanaka pamwe neiyo y axis ndipi/2 (radians).
- Kuchekwa kwakananga d kwakafanana nekuchekwa kwakananga pi*k+d kune chero nhamba k.
- Unogona kudzorera chero nzira, haifanirwe kubva ku [0,pi).
- Iyo giredhi inoverengera nzvimbo dzemakeke ako matanhatu mune zvakapetwa kaviri. Mhinduro inogamuchirwa kana mutsauko weukama kana kuti wakakwana pakati pavo uri pasi pe10 ^(-4).
- Zvakanyanya, rega X uye Y ive idiki uye yakakura pane yako nzvimbo nhanhatu, sekuverengerwa negiredhi. Zvadaro, mhinduro yako ichagamuchirwa kana Y <max( X + 10^(-4), X * (1+10^(-4)) ).
- (Iyo yekutanga vhezheni yedambudziko yakashandiswa 1e-7 chaiyo pachinzvimbo che 1e-4. Kugadzirisa dambudziko iri mudura muganho wakadzikiswa nekuda kwekuvapo kwenyaya dzedambudziko dzinowanzoita kuti basa risagadziriswe ne1e-7 chaiyo. Munyika yakanaka zvimhingamipinyi zvaisatendera nyaya dzakadai uye zvichiri kuda kunyatsojeka, kuti zvisave nyore kugadzirisa dambudziko kuburikidza nekuwedzera kwenhamba optimization.)

Zvipingamupinyi
- x ichave iine pakati pe3 uye 50 zvinhu, zvinosanganisira.
— y ichava nenhamba yezvimiro se x.
- Zvese zvinongedzo zvichave pakati pe0 negumi, zvinosanganisira.
- x uye y achatsanangura convex polygon munhevedzano yakaenzana.

mienzaniso

0)

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

A symmetrical asi irregular hexagon. Mhinduro yemuenzaniso inofanana nekuicheka nepakati yakachinjika uye kuita mamwe maviri kucheka pasi nepakati inokamura chidimbu chimwe nechimwe kuita zvidimbu zvitatu.

TopCoder Vhura 2019 dambudziko: cheka pie kuita zvidimbu zvitanhatu

1)

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

Triangle yekurudyi. Zvekare, tinogona kutanga neimwe yeatatu kucheka pamwe neaxis yesymmetry.

TopCoder Vhura 2019 dambudziko: cheka pie kuita zvidimbu zvitanhatu

2)

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

Irregular pentagon.

TopCoder Vhura 2019 dambudziko: cheka pie kuita zvidimbu zvitanhatu

3)

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

Sikweya yakatenderedzwa 45 degrees.

TopCoder Vhura 2019 dambudziko: cheka pie kuita zvidimbu zvitanhatu

[Chinhu]

Vashandisi vakanyoresa chete ndivo vanogona kutora chikamu muongororo. Nyorera mu, Munogamuchirwa.

Ndakagadzirisa dambudziko racho

  • mumaminitsi asingasviki mashanu

  • 10-30 maminitsi

  • 30-60 maminitsi

  • 1-2 maawa

  • mumaawa anopfuura maviri

  • zvimwe

42 vashandisi vakavhota. 47 vashandisi vakaramba.

Source: www.habr.com

Voeg