I-TopCoder Open 2019 inselele: sika uphaya ube yizicucu eziyisithupha

I-TopCoder Open 2019 inselele: sika uphaya ube yizicucu eziyisithupha
Ezinyathelweni “Okwethu kuwinile: I-TopCoder Open 2019” Ngishicilela izinkinga ezivela kuthrekhi ye-Algorithm (uhlelo lwezemidlalo lwakudala. Ehoreni elilodwa nesigamu udinga ukuxazulula izinkinga ezintathu ku-Java, C#, C++ noma Python.)

1. Uphayi kwabayisithupha

Ukwakheka kwenkinga

Umkhawulo wesikhathi amasekhondi angu-4.

Unophaya. Uma libhekwa phezulu, ikhekhe linomumo wepholigoni (ngokuqondile) eyi-convex. Unikezwa izixhumanisi zama-vertices kuzinombolo ezingu-X kanye no-Y.

Unabangane abahlanu. Ufuna ukuhlukanisa i-pie ibe yizicucu eziyisithupha zendawo elinganayo (kodwa hhayi isimo esifanayo). Yiqiniso, noma ubani angakwenza ngokusikeka okuhlanu, kodwa uchwepheshe kuphela ongakwenza ngokusikeka okuthathu.

Thola ukusikeka okuthathu emigqeni eqondile ngephuzu elilodwa elizohlukanisa uphaya ube izingxenye eziyisithupha ezilinganayo. Phrinta okuthi {x, y, d1, d2, d3}, lapho (x, y) kuyindawo evamile yakho konke ukusikeka okuthathu, futhi u-d1, d2, d3 ama-engeli esiqondiso sokusikeka kuma-radians.

IncazeloIkilasi: CakeForSix
Indlela:sika
Amapharamitha: int[], int[] Iyabuya: kabili[] Indlela isiginesha: kabili[] sika(int[] x, int[] y)
(qiniseka ukuthi indlela yakho isesidlangalaleni)

Amanothi

  • Isiqondiso esihle ku-x-eksisi ngu-0 (ama-radians), isiqondiso esihle eduze kwe-eksisi ka-y ngu-pi/2 (ama-radians).
  • Ukusika ku-d kuyafana nokusikwa ku-pi*k+d kunoma iyiphi inombolo k.
  • Ungakhipha noma yiziphi izikhombisi-ndlela, akumele zisuke ku- [0, pi).
  • Umdidiyeli uzobala indawo yezingcezu zakho eziyisithupha zekhekhe ngokuphindwe kabili. Impendulo izokwamukelwa uma isihlobo noma umehluko ophelele phakathi kwabo ungaphansi kuka-10^(-4).
  • Ngokunemba kakhudlwana, vumela u-X kanye no-Y kube yincane futhi enkulu kunazo zonke ezindaweni zakho eziyisithupha ezibalwa umhleli. Khona-ke impendulo yakho izokwamukelwa uma u-Y
  • (Inguqulo yasekuqaleni yenkinga isebenzise ukunemba kwe-1e-7 esikhundleni sika-1e-4. Ukuze kuxazululwe le nkinga kungobo yomlando, umkhawulo wokunemba wehliswa ngenxa yokuba khona kwamacala okushaya okungenzeka enze inkinga ingaxazululeki ngokunemba. ka-1e-7. Ezweni elikahle, imikhawulo ayiwavumeli amacala anjalo futhi isadinga ukunemba okuphezulu, ngakho ukuxazulula inkinga ngokusebenza kahle kwezinombolo akulula.)

Izithibelo

  • x iqukethe izici ezisuka ku-3 kuye kwezingu-50.
  • y iqukethe inani elifanayo lezakhi njenge-x.
  • zonke izixhumanisi phakathi kuka-0 no-10 ngokuhlanganisiwe
  • x kanye no-y bachaza ipholigoni eyi-convex ngendlela ephambene newashi.

original in english

Isitatimende Sezinkinga

Umkhawulo wesikhathi amasekhondi angu-4.

Unekhekhe. Uma kubonwa ngenhla, ikhekhe liyipholigoni (eqondile) eyi-convex. Unikezwe izixhumanisi zama-vertices ayo ku-int[]sx kanye no-y.

Unabangane abahlanu. Manje ufuna ukusika ikhekhe libe yizicucu eziyisithupha zendawo elinganayo (kodwa hhayi isimo esilinganayo). Yebo, noma ubani angakwenza lokho ngokusikeka okuhlanu - kodwa uchwepheshe weqiniso kuphela ongakwenza kathathu!

Thola ukusikeka kwemigqa emithathu eqondile edlula endaweni efanayo esika ikhekhe libe izingxenye eziyisithupha ezinkulu ngokulinganayo. Buyisela okuthi {x, y, d1, d2, d3}, lapho (x, y) kuyindawo evamile yokusikeka okuthathu, futhi u-d1, d2, d3 kuyizikhombisi-ndlela zazo ngama-radians.

Incazelo

Ikilasi: CakeForSix
Indlela:sika
Amapharamitha: int[], int[] Iyabuya: kabili[] Indlela isiginesha: kabili[] sika(int[] x, int[] y)
(qiniseka ukuthi indlela yakho isesidlangalaleni)

amanothi
— Isiqondiso esihle ku-eksisi ka-x ngu-0 (ama-radians), isiqondiso esihle eduze kwe-eksisi ka-y ngu-pi/2 (ama-radians).
— Ukusika ku-d kuyefana nokusikwa ku-pi*k+d kunoma iyiphi inombolo k.
- Ungabuyisela noma yiziphi izikhombisi-ndlela, akudingekile ukuthi zisuke ku- [0,pi).
- Umdidiyeli uzobala izindawo zezingcezu zakho zamakhekhe ayisithupha ngokuphindwe kabili. Impendulo izokwamukelwa uma isihlobo noma umehluko ophelele phakathi kwabo ungaphansi kuka-10^(-4).
- Ngokunemba kakhudlwana, vumela u-X kanye no-Y kube yincane futhi enkulu kunazo zonke ezindaweni zakho eziyisithupha, njengoba kubalwe ngekhompyutha umdidiyeli. Ngemva kwalokho, impendulo yakho izokwamukelwa uma Y < max( X + 10^(-4), X * (1+10^(-4)) ).
— (Inguqulo yasekuqaleni yenkinga isebenzise ukunemba okungu-1e-7 esikhundleni sika-1e-4. Ukuze kuxazululwe le nkinga kungobo yomlando umkhawulo wokunemba wehliswa ngenxa yokuba khona kwezimo ezinselele okungenzeka ukuthi zenza umsebenzi ungaxazululeki ngokunemba okungu-1e-7 Emhlabeni okahle izingqinamba bezingeke ziwavumele amacala anjalo futhi zisadinga ukunemba okuphezulu, ukuze kungabi lula ukuxazulula inkinga ngokusebenzisa ukulungiselelwa kwezinombolo okuvamile.)

Izithiyo
— x izoba phakathi kwezinto ezi-3 nezingu-50, ezihlanganisiwe.
— y izoba nenani lezakhi ezifanayo njenge x.
- Zonke izixhumanisi zizoba phakathi kuka-0 no-10,000, kuhlanganisiwe.
— u-x kanye no-y bazochaza ipholigoni eyi-convex ngokulandelana kwewashi.

Izibonelo

0)

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

Iheksagoni elinganayo kodwa engajwayelekile. Impendulo yesibonelo ihambisana nokusikwa phakathi nendawo ngokuvundlile nokwenza ezinye ezimbili zisike phakathi nendawo ezihlukanisa ucezu ngalunye lube izingxenye ezintathu.

I-TopCoder Open 2019 inselele: sika uphaya ube yizicucu eziyisithupha

1)

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

Unxantathu wesokudla. Futhi, singaqala ngokusikeka okukodwa kokuthathu ku-axis of symmetry.

I-TopCoder Open 2019 inselele: sika uphaya ube yizicucu eziyisithupha

2)

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

I-pentagon engavamile.

I-TopCoder Open 2019 inselele: sika uphaya ube yizicucu eziyisithupha

3)

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

Isikwele sizungeziswe ngamadigri angama-45.

I-TopCoder Open 2019 inselele: sika uphaya ube yizicucu eziyisithupha

[Umthombo]

Abasebenzisi ababhalisiwe kuphela abangabamba iqhaza kuhlolovo. Ngena ngemvume, wamukelekile.

Ngiyixazululele inkinga

  • ngaphansi kwemizuzu engu-10

  • Imizuzu engu-10-30

  • Imizuzu engu-30-60

  • Amahora we-1-2

  • emahoreni angaphezu kwama-2

  • nezinye

Bangu-42 abasebenzisi abavotile. Abasebenzisi abangu-47 bagobile.

Source: www.habr.com

Engeza amazwana