Dùbhlan TopCoder Open 2019: gearraich am pìos ann an sia pìosan

Dùbhlan TopCoder Open 2019: gearraich am pìos ann an sia pìosan
Anns na ceumannan-coise “Bhuannaich sinne: TopCoder Open 2019” Bidh mi a’ foillseachadh dhuilgheadasan bhon t-slighe Algorithm (prògraman spòrs clasaigeach. Ann an uair gu leth feumaidh tu trì duilgheadasan fhuasgladh ann an Java, C#, C ++ no Python.)

1. Pìos airson sia

Aithris dhuilgheadas

Is e an ceann-ùine 4 diogan.

Tha pie agad. Nuair a choimheadas tu bho shuas, tha cumadh polygon convex (gu teann) air a’ chèic. Thathas a’ toirt dhut co-chomharran nan vertices ann an àireamhan iomlan X agus Y.

Tha còignear charaidean agad. Tha thu airson am pìos a roinn ann an sia pìosan de dh'àite co-ionann (ach chan e gu feum an aon chumadh). Gu dearbh, faodaidh duine sam bith a dhèanamh ann an còig gearraidhean, ach chan urrainn ach pro a dhèanamh ann an trì gearraidhean.

Lorg trì gearraidhean ann an loidhnichean dìreach tro aon phuing a roinneas am pìos gu sia pàirtean co-ionann. Clò-bhuail {x, y, d1, d2, d3}, far a bheil (x, y) na phuing cumanta de na trì gearraidhean, agus is e d1, d2, d3 ceàrnan stiùiridh nan gearraidhean ann an radians.

mìneachadhClas: CakeForSix
Dòigh: gearradh
Paramadairean: int [], int [] Tilleadh: dùbailte [] Ainm-sgrìobhte modh: dùbailte [] gearradh (int [] x, int [] y)
(Dèan cinnteach gu bheil an dòigh-obrach agad poblach)

Notaichean

  • 'S e 0 (radians) an t-slighe dheimhinneach air an x-axis, agus is e pi/2 (radians) an stiùir dheimhinneach air an y-axis.
  • Tha gearradh anns an t-slighe d coltach ri gearradh anns an t-slighe pi * k + d airson slòigh sam bith k.
  • Faodaidh tu stiùireadh sam bith a chuir a-mach, chan fheum iad a bhith bho [0, pi).
  • Obraichidh an grader farsaingeachd nan sia pìosan cèic agad ann an dùblaidhean. Thèid gabhail ris an fhreagairt ma tha an eadar-dhealachadh càirdeach no iomlan eatorra nas lugha na 10 ^ (-4).
  • Nas mionaidiche, leig le X agus Y a bhith mar an fheadhainn as lugha agus as motha de na sia raointean agad air an tomhas leis an neach-gradachaidh. An uairsin thèid gabhail ri do fhreagairt ma tha Y
  • (Chleachd an dreach tùsail den duilgheadas cruinneas 1e-7 an àite 1e-4. Gus an duilgheadas seo fhuasgladh san tasglann, chaidh an ìre mionaideachd ìsleachadh air sgàth làthaireachd chùisean gairm a dhèanadh an duilgheadas gun fhuasgladh le mionaideachd de 1e-7 Ann an saoghal air leth freagarrach, chan eil na crìochan a’ ceadachadh a leithid de chùisean agus tha feum aca fhathast air mionaideachd àrd, agus mar sin chan eil e furasta an duilgheadas fhuasgladh le beagan optimization àireamhach coitcheann.)

Srian

  • x a’ toirt a-steach bho 3 gu 50 eileamaid gu h-in-ghabhalach.
  • Tha an aon àireamh de eileamaidean ann an y ri x.
  • uile co-chomharran eadar 0 agus 10 in-ghabhalach
  • Tha x agus y a’ mìneachadh polygon convex an taobh tuathal.

Tùsail sa Bheurla

Aithris Trioblaid

Is e crìoch ùine 4 diogan.

Tha cèic agad. Air fhaicinn gu h-àrd, tha a 'chèic na polygon (gu teann) convex. Thathas a’ toirt dhut co-chomharran a vertices anns an int[]sx agus y.

Tha còignear charaidean agad. Tha thu a-nis airson a’ chèic a ghearradh ann an sia pìosan de dh’ àite co-ionann (ach chan e gu feum an aon chumadh). Gu dearbh, faodaidh duine sam bith sin a dhèanamh ann an còig gearraidhean - ach chan urrainn ach fìor pro a dhèanamh ann an trì!

Lorg trì gearraidhean loidhne dhìreach a’ dol tron ​​aon phuing a gheàrr a’ chèic gu sia pàirtean a cheart cho mòr. Till {x, y, d1, d2, d3}, far a bheil (x, y) na phuing cumanta de na trì gearraidhean, agus d1, d2, d3 nan stiùiridhean ann an radians.

mìneachadh

Clas: CakeForSix
Dòigh: gearradh
Paramadairean: int [], int [] Tilleadh: dùbailte [] Ainm-sgrìobhte modh: dùbailte [] gearradh (int [] x, int [] y)
(Dèan cinnteach gu bheil an dòigh-obrach agad poblach)

Notaichean
— Is e 0 (radianan) an t-slighe dheimhinneach air an x ​​axis, is e pi/2 (radians) an stiùir dheimhinneach air an axis y.
- Tha gearradh ann an stiùireadh d co-ionann ri gearradh ann an treòrachadh pi*k + d airson iomlanachd k.
- Faodaidh tu stiùireadh sam bith a thilleadh, chan fheum iad a bhith bho [0,pi).
- Obraichidh an grader na raointean de na sia pìosan cèic agad ann an dùblaidhean. Thèid gabhail ris an fhreagairt ma tha an eadar-dhealachadh càirdeach no iomlan eatorra nas lugha na 10 ^ (-4).
- Nas mionaidiche, leig le X agus Y a bhith mar an fheadhainn as lugha agus as motha de na sia raointean agad, mar a chaidh a thomhas leis an neach-gradachaidh. An uairsin, thèid gabhail ri do fhreagairt ma tha Y <max(X + 10^(-4), X* (1+10^(-4)) ).
— (Chleachd an dreach tùsail den duilgheadas 1e-7 mionaideachd an àite 1e-4. Airson fuasgladh fhaighinn air an duilgheadas seo san tasglann chaidh a’ chrìoch mionaideachd ìsleachadh air sgàth gu robh cùisean dùbhlain ann a tha dualtach a’ ghnìomh a fhuasgladh le mionaideachd 1e-7 Ann an saoghal air leth freagarrach cha leigeadh na cuingeadan le leithid de chùisean agus tha feum fhathast air mionaideachd àrd, gus nach bi e furasta an duilgheadas fhuasgladh tro optimization àireamhach coitcheann.)

Cuibhrean
— bidh eadar 3 agus 50 eileamaid aig x, in-ghabhalach.
— bidh an aon àireamh de eileamaidean aig y ri x.
- Bidh na co-chomharran uile eadar 0 agus 10,000, in-ghabhalach.
— Bheir x agus y cunntas air polygon convex ann an òrdugh tuathal.

eisimpleirean

0)

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

Hexagon co-chothromach ach neo-riaghailteach. Tha an fhreagairt eisimpleir a 'freagairt ri bhith ga ghearradh ann an leth gu còmhnard agus a' dèanamh dà ghearradh eile sìos am meadhan a tha a 'roinn gach pìos ann an trì pìosan.

Dùbhlan TopCoder Open 2019: gearraich am pìos ann an sia pìosan

1)

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

Triantan ceart. A-rithist, is urrainn dhuinn tòiseachadh le aon de thrì gearraidhean air axis co-chothromachd.

Dùbhlan TopCoder Open 2019: gearraich am pìos ann an sia pìosan

2)

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

Pentagon neo-riaghailteach.

Dùbhlan TopCoder Open 2019: gearraich am pìos ann an sia pìosan

3)

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

Bha ceàrnag a 'cuairteachadh 45 ceum.

Dùbhlan TopCoder Open 2019: gearraich am pìos ann an sia pìosan

[Stòr]

Chan fhaod ach luchd-cleachdaidh clàraichte pàirt a ghabhail san sgrùdadh. Soidhnig a-steach, mas e do thoil e.

Dh'fhuasgail mi an duilgheadas airson

  • ann an nas lugha na 10 mionaidean

  • Mionaidean 10-30

  • Mionaidean 30-60

  • 1-2 uairean

  • ann an còrr is 2 uair a thìde

  • eile

Bhòt 42 neach-cleachdaidh. Sheall 47 neach-cleachdaidh.

Source: www.habr.com

Cuir beachd ann