Fanamby TopCoder Open 2019: tapaho ho enina ny pie

Fanamby TopCoder Open 2019: tapaho ho enina ny pie
Amin'ny dian-tongotra β€œNandresy ny anay: TopCoder Open 2019” Mamoaka olana avy amin'ny lalana Algorithm aho (fandaharana ara-panatanjahantena klasika. Ao anatin'ny adiny iray sy sasany dia mila mamaha olana telo amin'ny Java, C#, C++ na Python ianao.)

1. Pie ho an'ny enina

Fanambarana olana

Ny fe-potoana dia 4 segondra.

Manana pie ianao. Raha jerena avy eny ambony, ny mofomamy dia manana endrika polygon convex (henjana). Omena anao ny fandrindrana ny vertices amin'ny isa X sy Y.

Manana namana dimy ianao. Te-hizara ny pie ho enina amin'ny faritra mitovy (fa tsy voatery hitovy endrika). Mazava ho azy fa na iza na iza dia afaka manao izany amin'ny tapaka dimy, fa ny pro ihany no afaka manao izany amin'ny telo tapaka.

Mitadiava fanapahana telo amin'ny tsipika mahitsy amin'ny teboka iray izay hizara ny pie ho ampahany enina mitovy. Print {x, y, d1, d2, d3}, izay (x, y) no teboka iraisan'ny fanapahana telo, ary ny d1, d2, d3 dia ny zoro fitarihan'ny fanapahana amin'ny radians.

famaritanaKilasy: CakeForSix
Fomba: tapaho
Paramètre: int[], int[] Miverina: double[] Fomba sonia: double[] cut(int[] x, int[] y)
(azo antoka fa ampahibemaso ny fomba fanaonao)

-tsoratra

  • Ny tari-dalana tsara eo amin'ny x-axis dia 0 (radiana), ny lalana tsara eo amin'ny y-axis dia pi/2 (radiana).
  • Ny fanapahana amin'ny lalana d dia mitovy amin'ny tapaka amin'ny pi*k+d ho an'ny integer k.
  • Azonao atao ny mamoaka torolΓ lana rehetra, tsy voatery avy amin'ny [0, pi).
  • Ny grader dia hanao kajy ny velaran'ny mofomamy eninao amin'ny avo roa heny. Ekena ny valiny raha toa ka latsaky ny 10^(-4) ny elanelana havanana na tanteraka.
  • Ny marimarina kokoa, avelao ny X sy Y ho kely indrindra sy lehibe indrindra amin'ireo faritra eninao kajy ataon'ny mpanadina. Dia ho ekena ny valinteninao raha Y
  • (Ny dikan-teny tany am-boalohany amin'ny olana dia nampiasa 1e-7 fa tsy 1e-4. Mba hamahana ity olana ity ao amin'ny arisiva, dia nampidinina ny fetra mazava noho ny fisian'ny tranga fiantsoana izay mety hahatonga ny olana tsy ho voavaha amin'ny fahitsiana. amin'ny 1e-7. Ao amin'ny tontolo idealy, ny fetra dia tsy mamela ny tranga toy izany ary mbola mitaky mazava tsara, noho izany dia tsy mora ny famahana ny olana amin'ny fanatsarana ny isa ankapobeny.)

fameperana

  • x dia misy singa 3 ka hatramin'ny 50 ao anatin'izany.
  • y dia misy singa mitovy amin'ny x.
  • ny fandrindrana rehetra eo anelanelan'ny 0 sy 10 inclusive
  • x sy y dia mamaritra polygon convex amin'ny lalana mifanohitra amin'ny famantaranandro.

Original amin'ny teny anglisy

Fanambarana momba ny olana

Ny fe-potoana dia 4 segondra.

Manana mofomamy ianao. Raha jerena avy any ambony, ny mofomamy dia polygone convex (henjana). Omena anao ny fandrindrana ny vertices ao amin'ny int[]sx sy y.

Manana namana dimy ianao. Te-hanapaka ny mofomamy ho enina amin'ny faritra mitovy (fa tsy voatery hitovy endrika). Mazava ho azy fa na iza na iza dia afaka manao izany amin'ny fanapahana dimy - fa ny tena matihanina ihany no afaka manao izany amin'ny telo!

Mitadiava tsipika mahitsy telo mamakivaky ilay teboka iray izay nanapaka ny mofomamy ho ampahany enina mitovy lehibe. Miverena {x, y, d1, d2, d3}, izay (x, y) no teboka iraisan'ireo fanapahana telo, ary ny d1, d2, d3 dia ny tari-dalana amin'ny radianina.

famaritana

Kilasy: CakeForSix
Fomba: tapaho
Paramètre: int[], int[] Miverina: double[] Fomba sonia: double[] cut(int[] x, int[] y)
(azo antoka fa ampahibemaso ny fomba fanaonao)

Fanamarihana
- Ny zotra tsara manaraka ny axe x dia 0 (radiana), ny lalana miabo eo amin'ny axe y dia pi/2 (radiana).
- Ny fanapahana amin'ny lalana d dia mitovy amin'ny fahatapahana amin'ny lalana pi*k+d ho an'ny integer k.
β€” Azonao atao ny miverina amin'ny lalana rehetra, tsy voatery avy amin'ny [0,pi).
β€” Ny mpandalina dia hanao kajy ny velaran'ny sombin-mofo eninao amin'ny indroa. Ekena ny valiny raha toa ka latsaky ny 10^(-4) ny elanelana havanana na tanteraka.
- Raha ny marimarina kokoa, avelao ny X sy Y ho kely indrindra sy lehibe indrindra amin'ireo faritra eninao, araka ny kaontin'ny mpanadina. Dia ho ekena ny valinteninao raha Y < max( X + 10^(-4), X * (1+10^(-4)) ).
β€” (Ny dikan-teny tany am-boalohany amin'ny olana dia nampiasa 1e-7 precision fa tsy 1e-4. Mba hamahana ity olana ity ao amin'ny arsiva dia nampidinina ny fetra mazava tsara noho ny fisian'ny tranga fanamby izay mety hahatonga ny asa tsy ho voavaha amin'ny 1e-7 precision. Ao amin'ny tontolo tsara indrindra dia tsy mamela ny tranga toy izany ny teritery ary mbola mitaky mazava tsara, mba tsy ho mora ny famahana ny olana amin'ny alΓ lan'ny fanatsarana ny isa ankapobeny.)

faneren'ny
- X dia hanana singa 3 ka hatramin'ny 50, anisan'izany.
β€” y dia hanana singa mitovy amin'ny x.
- Ny fandrindrana rehetra dia eo anelanelan'ny 0 sy 10,000, anisan'izany.
β€” x sy y dia mamaritra polygone convex amin'ny filaharana mifanohitra amin'ny famantaranandro.

ohatra

0)

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

Hexagon mirindra nefa tsy ara-dalΓ na. Ny valin'ny ohatra dia mifanandrify amin'ny fanapahana azy amin'ny antsasany mitsivalana ary manapaka roa hafa midina ny afovoany izay mizara ny tapany tsirairay ho telo.

Fanamby TopCoder Open 2019: tapaho ho enina ny pie

1)

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

telozoro havanana. Averina indray, afaka manomboka amin'ny iray amin'ireo fanapahana telo miaraka amin'ny axe de symmetry isika.

Fanamby TopCoder Open 2019: tapaho ho enina ny pie

2)

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

Pentagon tsy ara-dalΓ na.

Fanamby TopCoder Open 2019: tapaho ho enina ny pie

3)

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

Efamira iray nihodina 45 degre.

Fanamby TopCoder Open 2019: tapaho ho enina ny pie

[loharano]

Ireo mpampiasa voasoratra anarana ihany no afaka mandray anjara amin'ny fanadihadiana. HiditraPlease.

Namaha ny olana aho

  • ao anatin'ny 10 minitra latsaka

  • 10-30 minitra

  • 30-60 minitra

  • 1-2 ora

  • ao anatin'ny 2 ora mahery

  • hafa

Mpampiasa 42 no nifidy. Mpampiasa 47 no nifady.

Source: www.habr.com

Add a comment