Sfida TopCoder Open 2019: aqta 't-torta f'sitt biċċiet

Sfida TopCoder Open 2019: aqta 't-torta f'sitt biċċiet
Fil-passi “Tagħna rebħu: TopCoder Open 2019” Nippubblika problemi mill-binarju tal-Algoritmu (programmazzjoni sportiva klassika. F'siegħa u nofs trid issolvi tliet problemi f'Java, C#, C++ jew Python.)

1. Torta għal sitta

Dikjarazzjoni tal-problema

Il-limitu ta' żmien huwa ta' 4 sekondi.

Għandek torta. Meta wieħed iħares minn fuq, il-kejk għandu forma ta 'poligonu (strettament) konvess. Int tingħata l-koordinati tal-vertiċi f'interi X u Y.

Għandek ħames ħbieb. Trid taqsam it-torta f'sitt biċċiet ta 'żona ugwali (iżda mhux neċessarjament l-istess forma). Naturalment, kulħadd jista 'jagħmel dan f'ħames qatgħat, iżda pro biss jista' jagħmel dan fi tliet qatgħat.

Sib tliet qatgħat f'linji dritti minn punt wieħed li jaqsam it-torta f'sitt partijiet indaqs. Stampa {x, y, d1, d2, d3}, fejn (x, y) huwa l-punt komuni tat-tliet qatgħat kollha, u d1, d2, d3 huma l-angoli tad-direzzjoni tal-qatgħat f'radians.

definizzjoniKlassi: CakeForSix
Metodu: maqtugħ
Parametri: int[], int[] Ritorn: double[] Firma tal-metodu: double[] cut(int[] x, int[] y)
(kun żgur li l-metodu tiegħek huwa pubbliku)

Noti

  • Id-direzzjoni pożittiva tul l-assi x hija 0 (radjani), id-direzzjoni pożittiva tul l-assi y hija pi / 2 (radjani).
  • Qatgħa fid-direzzjoni d hija simili għal qatgħa fid-direzzjoni pi * k + d għal kull numru sħiħ k.
  • Tista' toħroġ kwalunkwe direzzjoni, m'għandhomx għalfejn ikunu minn [0, pi).
  • Min jiggrada jikkalkula l-erja tas-sitt biċċiet tal-kejk tiegħek f'doppji. It-tweġiba tiġi aċċettata jekk id-differenza relattiva jew assoluta bejniethom tkun inqas minn 10^(-4).
  • B'mod aktar preċiż, ħalli X u Y ikunu l-iżgħar u l-akbar mis-sitt oqsma tiegħek ikkalkulati mill-grader. Imbagħad it-tweġiba tiegħek tiġi aċċettata jekk Y
  • (Il-verżjoni oriġinali tal-problema użat preċiżjoni ta '1e-7 minflok 1e-4. Biex issolvi din il-problema fl-arkivju, il-limitu ta' preċiżjoni tbaxxa minħabba l-preżenza ta 'każijiet ta' sejħa li x'aktarx jagħmlu l-problema mhux solvabbli bi preċiżjoni. ta' 1e-7. F'dinja ideali, il-limiti ma jippermettux każijiet bħal dawn u xorta jeħtieġu preċiżjoni għolja, għalhekk is-soluzzjoni tal-problema b'xi ottimizzazzjoni numerika ġenerali mhix faċli.)

Restrizzjonijiet

  • x fih minn 3 sa 50 element inklużi.
  • y fih l-istess numru ta' elementi bħal x.
  • il-koordinati kollha bejn 0 u 10 inklużi
  • x u y jiddefinixxu poligonu konvessi f'direzzjoni kontra l-arloġġ.

Oriġinali bl-Ingliż

Dikjarazzjoni tal-Problema

Il-limitu ta' żmien huwa ta' 4 sekondi.

Għandek kejk. Jidher minn fuq, il-kejk huwa poligonu (strettament) konvess. Int tingħata l-koordinati tal-vertiċi tagħha fl-int[]sx u y.

Għandek ħames ħbieb. Issa trid tnaqqas il-kejk f'sitt biċċiet ta 'żona ugwali (iżda mhux neċessarjament forma ugwali). Naturalment, kulħadd jista 'jagħmel dan f'ħames qatgħat - iżda pro veru biss jista' jagħmel dan fi tlieta!

Sib tliet qatgħat dritti li jgħaddu mill-istess punt li qatgħu l-kejk f'sitt partijiet ugwalment kbar. Ritorn {x, y, d1, d2, d3}, fejn (x, y) huwa l-punt komuni tat-tliet qatgħat, u d1, d2, d3 huma d-direzzjonijiet tagħhom f'radians.

definizzjoni

Klassi: CakeForSix
Metodu: maqtugħ
Parametri: int[], int[] Ritorn: double[] Firma tal-metodu: double[] cut(int[] x, int[] y)
(kun żgur li l-metodu tiegħek huwa pubbliku)

Noti
— Id-direzzjoni pożittiva tul l-assi x hija 0 (radjani), id-direzzjoni pożittiva tul l-assi y hija pi/2 (radjani).
— Qatgħa fid-direzzjoni d hija l-istess bħal qatgħa fid-direzzjoni pi*k+d għal kull numru sħiħ k.
— Tista' tirritorna xi direzzjonijiet, m'għandhomx għalfejn ikunu minn [0,pi).
— Il-grader se jikkalkula l-erjas tas-sitt biċċiet tal-kejkijiet tiegħek fid-doppji. It-tweġiba tiġi aċċettata jekk id-differenza relattiva jew assoluta bejniethom tkun inqas minn 10^(-4).
— B'mod aktar preċiż, ħalli X u Y ikunu l-iżgħar u l-akbar mis-sitt oqsma tiegħek, kif ikkalkulati mill-grader. Imbagħad, it-tweġiba tiegħek tiġi aċċettata jekk Y < max( X + 10^(-4), X * (1+10^(-4)) ).
— (Il-verżjoni oriġinali tal-problema użat preċiżjoni 1e-7 minflok 1e-4. Biex tissolva din il-problema fl-arkivju l-limitu ta’ preċiżjoni tbaxxa minħabba l-eżistenza ta’ każijiet ta’ sfida li x’aktarx jagħmlu l-kompitu mhux solvubbli bi preċiżjoni 1e-7 F'dinja ideali r-restrizzjonijiet ma jippermettux każijiet bħal dawn u xorta jeħtieġu preċiżjoni għolja, sabiex ma jkunx faċli li tissolva l-problema permezz ta 'xi ottimizzazzjoni numerika ġenerali.)

Limitazzjonijiet
— x ikollu bejn 3 u 50 element, inklużi.
— y se jkollha l-istess numru ta’ elementi bħal x.
— Il-koordinati kollha se jkunu bejn 0 u 10,000, inklużi.
— x u y se jiddeskrivu poligonu konvess f'ordni kontra l-arloġġ.

eżempji

0)

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

Eżagonu simetriku iżda irregolari. It-tweġiba eżempju tikkorrispondi għal qtugħ min-nofs orizzontalment u tagħmel żewġ qatgħat oħra miċ-ċentru li jaqsmu kull biċċa fi tliet biċċiet.

Sfida TopCoder Open 2019: aqta 't-torta f'sitt biċċiet

1)

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

Trijangolu rettangolo. Għal darb'oħra, nistgħu nibdew b'wieħed minn tliet qatgħat tul l-assi tas-simetrija.

Sfida TopCoder Open 2019: aqta 't-torta f'sitt biċċiet

2)

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

Pentagonu irregolari.

Sfida TopCoder Open 2019: aqta 't-torta f'sitt biċċiet

3)

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

Kwadru mdawwar 45 grad.

Sfida TopCoder Open 2019: aqta 't-torta f'sitt biċċiet

[Sors]

Utenti reġistrati biss jistgħu jipparteċipaw fl-istħarriġ. Idħol, ta 'xejn.

I solvut il-problema għal

  • f'inqas minn 10 minuti

  • 10-30 minuti

  • 30-60 minuti

  • sigħat 1-2

  • f'aktar minn sagħtejn

  • oħra

42 utent ivvutaw. 47-il utent astjenew.

Sors: www.habr.com

Żid kumment