TopCoder Open 2019 defi: koupe tat la an sis moso

TopCoder Open 2019 defi: koupe tat la an sis moso
Nan mak pye yo "Nou te genyen: TopCoder Open 2019" Mwen pibliye pwoblèm nan tras Algorithm la (programmasyon espò klasik. Nan yon èdtan edmi ou bezwen rezoud twa pwoblèm nan Java, C#, C++ oswa Python.)

1. tat pou sis

Deklarasyon sou pwoblèm nan

Limit tan an se 4 segonn.

Ou gen yon tat. Lè yo gade anwo, gato a gen fòm yon poligòn konvèks (fèkteman). Yo ba w kowòdone somè yo nan nonm antye X ak Y yo.

Ou gen senk zanmi. Ou vle divize tat la an sis moso nan zòn egal (men pa nesesèman menm fòm). Natirèlman, nenpòt moun ka fè li nan senk koupe, men se sèlman yon pwofesyonèl ka fè li nan twa koupe.

Jwenn twa koupe nan liy dwat nan yon pwen ki pral divize tat la an sis pati egal. Ekri an lèt detache {x, y, d1, d2, d3}, kote (x, y) se pwen komen tout twa koupe yo, epi d1, d2, d3 se ang direksyon koupe yo an radian.

DefinisyonKlas: CakeForSix
Metòd: koupe
Paramèt: int[], int[] Retounen: double[] Metòd siyati: double[] cut(int[] x, int[] y)
(asire w ke metòd ou an piblik)

Nòt

  • Direksyon pozitif sou aks x la se 0 (radian), direksyon pozitif sou aks y se pi/2 (radiyan).
  • Yon koupe nan direksyon d sanble ak yon koupe nan direksyon pi*k+d pou nenpòt ki nonb antye relatif k.
  • Ou ka bay nenpòt direksyon, yo pa oblije soti nan [0, pi).
  • Elèv klas la ap kalkile sis moso gato ou an doub. Y ap aksepte repons lan si diferans relatif oswa absoli ant yo mwens pase 10^(-4).
  • Plis presizeman, se pou X ak Y pi piti ak pi gwo nan sis zòn ou yo kalkile pa elèv klas la. Lè sa a, repons ou a pral aksepte si Y
  • (Vèsyon orijinal pwoblèm nan te itilize yon presizyon nan 1e-7 olye de 1e-4. Pou rezoud pwoblèm sa a nan achiv la, limit la presizyon te bese akòz prezans nan ka rele ki ta gen anpil chans fè pwoblèm nan ensolubl ak yon presizyon. nan 1e-7. Nan yon mond ideyal, limit yo pa pèmèt ka sa yo epi yo toujou mande pou gwo presizyon, kidonk rezoud pwoblèm nan ak kèk optimize nimerik jeneral pa fasil.)

Restriksyon yo

  • x genyen ant 3 a 50 eleman enklizif.
  • y gen menm kantite eleman ak x.
  • tout kowòdone ant 0 ak 10 enklizif
  • x ak y defini yon poligòn konvèks nan yon direksyon envers.

Orijinal nan lang angle

Deklarasyon Pwoblèm

Limit tan se 4 segonn.

Ou gen yon gato. Wè nan pi wo a, gato a se yon poligòn (fèkteman) konvèks. Yo ba w kowòdone somè li yo nan int[]sx ak y.

Ou gen senk zanmi. Koulye a, ou vle koupe gato a an sis moso nan zòn egal (men se pa nesesèman egal fòm). Natirèlman, nenpòt moun ka fè sa nan senk koupe - men se sèlman yon pwofesyonèl vre ka fè li nan twa!

Jwenn twa koupe liy dwat ki pase nan menm pwen an ki koupe gato a an sis pati egalman gwo. Retounen {x, y, d1, d2, d3}, kote (x, y) se pwen komen twa koupe yo, epi d1, d2, d3 se direksyon yo an radian.

Definisyon

Klas: CakeForSix
Metòd: koupe
Paramèt: int[], int[] Retounen: double[] Metòd siyati: double[] cut(int[] x, int[] y)
(asire w ke metòd ou an piblik)

nòt
— Direksyon pozitif sou aks x la se 0 (radiyan), direksyon pozitif sou aks y se pi/2 (radiyan).
— Yon koupe nan direksyon d se menm jan ak yon koupe nan direksyon pi*k+d pou nenpòt nonb antye k.
— Ou ka retounen nenpòt direksyon, yo pa oblije soti nan [0,pi).
— Elèv klas la ap kalkile zòn sis moso gato ou yo an doub. Y ap aksepte repons lan si diferans relatif oswa absoli ant yo mwens pase 10^(-4).
— Plis presizeman, se pou X ak Y pi piti ak pi gwo nan sis zòn ou yo, jan elèv klas la kalkile. Lè sa a, yo pral aksepte repons ou si Y < max( X + 10^(-4), X * (1+10^(-4)) ).
— (Vèsyon orijinal pwoblèm nan te itilize 1e-7 presizyon olye de 1e-4. Pou rezoud pwoblèm sa a nan achiv la limit presizyon te bese akòz egzistans ka defi ki gen plis chans fè travay la pa ka rezoud ak presizyon 1e-7. Nan yon mond ideyal kontrent yo pa ta pèmèt ka sa yo epi yo toujou mande pou gwo presizyon, se konsa ke li pa fasil pou rezoud pwoblèm nan atravè kèk optimize nimerik jeneral.)

Kontrent
— x pral genyen ant 3 ak 50 eleman, enklizif.
— y ap gen menm kantite eleman ak x.
— Tout kowòdone yo pral ant 0 ak 10,000, enklizif.
— x ak y pral dekri yon poligòn konvèks nan lòd envers.

egzanp

0)

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

Yon egzagòn simetrik men iregilye. Repons egzanp lan koresponn ak koupe l an mwatye orizontal epi fè de lòt koupe nan sant la ki divize chak moso an twa pati.

TopCoder Open 2019 defi: koupe tat la an sis moso

1)

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

Triyang dwat. Ankò, nou ka kòmanse ak youn nan twa koupe sou aks simetri a.

TopCoder Open 2019 defi: koupe tat la an sis moso

2)

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

Pentagòn iregilye.

TopCoder Open 2019 defi: koupe tat la an sis moso

3)

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

Yon kare vire 45 degre.

TopCoder Open 2019 defi: koupe tat la an sis moso

[Sous]

Se sèlman itilizatè ki anrejistre ki ka patisipe nan sondaj la. Enskri, tanpri.

Mwen rezoud pwoblèm nan pou

  • nan mwens pase 10 minit

  • KIJE-NAN minit

  • KIJE-NAN minit

  • 1-2 èdtan

  • nan plis pase 2 èdtan

  • lòt

42 itilizatè yo te vote. 47 itilizatè te absteni.

Sous: www.habr.com

Add nouvo kòmantè