Loolanka TopCoder Furan ee 2019: u gooy keega lix qaybood

Loolanka TopCoder Furan ee 2019: u gooy keega lix qaybood
Raadkii "Anaga ayaa guuleystay: TopCoder Open 2019" Waxaan dhibaatooyinka ka daabacaa jidka Algorithm (Barnaamijka ciyaaraha qadiimiga ah. Hal saac iyo badh waxaad u baahan tahay inaad ku xalliso saddex dhibaato Java, C #, C++ ama Python.)

1. Pie lix

Abuurista dhibaatada

Waqtiga xaddidan waa 4 ilbiriqsi.

Waxaad leedahay pie. Marka kor laga eego, keega wuxuu leeyahay qaab (si adag) geeso leh. Waxaa lagu siinayaa isku-duwayaasha darafyada ku jira X iyo Y integers.

Waxaad leedahay shan saaxiib. Waxaad doonaysaa inaad u qaybiso pie lix qaybood oo siman oo siman (laakin ma aha daruuri qaab isku mid ah). Dabcan, qof kastaa wuxuu ku samayn karaa shan gooyn, laakiin kaliya pro-gu wuxuu ku samayn karaa saddex qaybood.

Soo hel saddex gooyn oo xariiq toosan ah iyada oo loo marayo hal dhibic oo u qaybin doonta pie lix qaybood oo siman. Daabac {x, y, d1, d2, d3}, halkaas oo (x, y) ay tahay barta guud ee dhammaan saddexda gooyn, iyo d1, d2, d3 waa xaglaha jihada jeexan ee raadiyaha.

QeexidFasalka: CakeForSix
Habka: gooyn
Halbeegyada: int[], int[] Soo noqda: labanlaab[] Habka saxeexa: labanlaab[] gooyo (int[] x, int[] y)
(hubi in habkaagu yahay mid guud)

Ogeysiis

  • Jihada togan ee dhidibka x waa 0 (radians), jihada togan ee dhidibka y waa pi/2 (radians).
  • Goynta jihada d waxay la mid tahay goynta jihada pi*k+d ee halbeeg kasta k.
  • Waxaad soo saari kartaa jihooyin kasta, maaha inay ka yimaadaan [0, pi).
  • Ardaygu wuxuu xisaabin doonaa bedka lixda xabbo ee keeggaaga labanlaab. Jawaabta waa la aqbali doonaa haddii qaraabada ama farqiga u dhexeeya iyaga ka yar yahay 10 ^ (-4).
  • Si aad u saxan, X iyo Y ha noqdeen kuwa ugu yar uguna weyn lixda goobood ee uu xisaabiyay ardaygu. Markaa jawaabtaada waa la aqbali doonaa haddii Y
  • (Nooca asalka ah ee dhibaatadu waxay isticmaashay sax ah 1e-7 halkii ay ka ahayd 1e-4. Si loo xalliyo dhibaatadan kaydka, xadka saxda ah ayaa hoos loo dhigay iyadoo ay ugu wacan tahay joogitaanka kiisaska wicitaanka taas oo u badan tahay inay dhibaatada ka dhigto mid aan la xallin karin si sax ah. of 1e-7. Dunida ku habboon, xadku ma ogola kiisaska noocaas ah oo wali waxay u baahan yihiin saxsanaan sare, markaa xallinta dhibaatada qaar ka mid ah hagaajinta tirooyinka guud ma fududa.)

Xaddidaadda

  • x waxa uu ka kooban yahay 3 ilaa 50 curiye oo loo dhan yahay.
  • y wuxuu ka kooban yahay tiro isku mid ah sida x.
  • dhammaan isku-duwayaasha 0 iyo 10 oo loo dhan yahay
  • x iyo y waxay ku qeexaan geeso badan oo leh jihada saacada ka soo horjeeda.

asalka ah in ingiriisiga

Bayaanka Dhibaatada

Waqtiga xaddidan waa 4 ilbiriqsi.

Waxaad haysataa keeg Xagga sare laga arkay, keega ayaa ah (si adag) geeso leh. Waxaa lagu siiyay isku-duwayaasha geesaheeda gudaha int[]sx iyo y.

Waxaad leedahay shan saaxiib. Hadda waxaad rabtaa inaad u gooyso keega lix qaybood oo siman (laakin ma aha qasab qaab siman). Dabcan, qof kastaa wuu samayn karaa taas shan goyn - laakiin kaliya pro- run ah ayaa ku samayn kara saddex!

Soo hel saddex gooyn oo toosan oo dhex mara isla bartaas oo keega u gooyay lix qaybood oo isku mid ah. Soo celi {x, y, d1, d2, d3}, halka (x, y) ay tahay barta guud ee saddexda gooyn, iyo d1, d2, d3 waa jihooyinkooda raadiyaha.

Qeexid

Fasalka: CakeForSix
Habka: gooyn
Halbeegyada: int[], int[] Soo noqda: labanlaab[] Habka saxeexa: labanlaab[] gooyo (int[] x, int[] y)
(hubi in habkaagu yahay mid guud)

Notes
- Jihada togan ee dhidibka x waa 0 (radians), jihada togan ee dhidibka y waa pi/2 (radians).
- Goynta jihada d waxay la mid tahay goynta jihada pi*k+d ee far kasta k.
- Waxaad soo celin kartaa tilmaamo kasta, maaha inay ka yimaadaan [0,pi).
- Qalin-qaaduhu wuxuu xisaabin doonaa aagagga lixda xabbo ee keeggaaga labanlaab. Jawaabta waa la aqbali doonaa haddii qaraabada ama farqiga u dhexeeya iyaga ka yar yahay 10 ^ (-4).
- Si sax ah, X iyo Y ha noqdeen kuwa ugu yar uguna weyn lixdaaga aag, sida uu xisaabiyay ardaygu. Kadib, jawaabtaada waa la aqbali doonaa haddii Y <max( X + 10^ (-4), X * (1+10^ (-4))).
- (Nooca asalka ah ee dhibaatadu waxay isticmaashay 1e-7 sax ah halkii ay ka ahayd 1e-4. Si loo xalliyo dhibaatadan kaydka xadka saxda ah ayaa hoos loo dhigay sababtoo ah jiritaanka kiisas caqabado ah oo ay u badan tahay inay hawsha ka dhigaan mid aan lagu xallin karin saxnaanta 1e-7 Adduunka ugu habboon caqabadaha ma oggolaan doono kiisaskan oo kale oo weli waxay u baahan yihiin saxnaan sare, si aanay u sahlanayn in lagu xalliyo dhibaatada iyada oo la adeegsanayo hagaajinta tirada guud.)

Caqabadaha
- x waxay yeelan doontaa inta u dhaxaysa 3 iyo 50 curiye, oo loo dhan yahay.
- y waxay yeelan doonaan tiro la mid ah curiyeyaasha x.
- Dhammaan isku-duwayaasha waxay ahaan doonaan inta u dhaxaysa 0 iyo 10,000, oo loo dhan yahay.
- x iyo y waxay ku sifayn doonaan geeso badan oo isku xiga siday u kala horreeyaan.

tusaalooyin

0)

{0, 20, 30, 50, 30, 20}
{10, 0, 0, 10, 20, 20}
Soo-celinta:
{24.999999999437453, 9.999999999500002, 0.0, 0.7266423406817211, 2.4149503129080787}

Simmetrical ah laakiin aan joogto ahayn. Jawaabta tusaale ahaan waxay u dhigantaa in kala badh loo gooyo si siman oo laba kale loo gooyo bartamaha taas oo qayb kasta u qaybisa saddex qaybood.

Loolanka TopCoder Furan ee 2019: u gooy keega lix qaybood

1)

{0, 1000, 0}
{0, 0, 1000}
Soo-celinta:
{333.3333333331763, 333.3333333332546, 0.7853981633986264, 2.0344439357948154, 2.6779450445891753}

Saddex xagalka saxda ah. Mar labaad, waxaan ku bilaabi karnaa mid ka mid ah saddexda gooyn ee dhidibka summaynta.

Loolanka TopCoder Furan ee 2019: u gooy keega lix qaybood

2)

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

Pentagon aan joogto ahayn.

Loolanka TopCoder Furan ee 2019: u gooy keega lix qaybood

3)

{300}
{500}
Soo laabtay: {299.99999999974995, 599.9999999995, 0.0, 1.107148717794088, 2.034443935795705}

Labajibbaaran ayaa wareegay 45 darajo.

Loolanka TopCoder Furan ee 2019: u gooy keega lix qaybood

[Xigasho]

Isticmaalayaasha diiwaangashan oo keliya ayaa ka qaybqaadan kara sahanka. Soo gal, soo dhawoow.

Waxaan u xaliyay dhibaatada

  • in ka yar 10 daqiiqo

  • 10-30 daqiiqado

  • 30-60 daqiiqado

  • Saacadaha 1-2

  • in ka badan 2 saacadood

  • kale

42 isticmaale ayaa u codeeyay. 47 isticmaale ayaa ka aamusay.

Source: www.habr.com

Add a comment