Tantangan TopCoder Open 2019: potong pai kana genep lembar

Tantangan TopCoder Open 2019: potong pai kana genep lembar
Dina tatapakan "Urang meunang: TopCoder Buka 2019" Kuring nyebarkeun masalah tina lagu Algoritma (programming olahraga klasik. Dina hiji satengah jam anjeun kudu ngajawab tilu masalah dina Java, C #, C ++ atanapi Python.)

1. pai pikeun genep

Ngarumuskeun masalah

Wates waktos nyaéta 4 detik.

Anjeun gaduh pai. Lamun ditingali ti luhur, jajan boga bentuk polygon convex (kaku). Anjeun dibéré koordinat tina verteks dina X jeung Y integers.

Anjeun gaduh lima babaturan. Rék ngabagi pai kana genep lembar wewengkon sarua (tapi teu merta bentukna sarua). Tangtosna, saha waé tiasa ngalakukeun dina lima potongan, tapi ngan ukur pro anu tiasa ngalakukeun dina tilu potongan.

Manggihan tilu motong dina garis lempeng ngaliwatan hiji titik nu bakal ngabagi pai kana genep bagian sarua. Print {x, y, d1, d2, d3}, dimana (x, y) mangrupakeun titik umum tina tilu motong, sarta d1, d2, d3 mangrupakeun sudut arah tina motong dina radian.

panjelasanKelas: CakeForSix
Métode: motong
Parameter: int [], int [] Wangsul: ganda [] Métode tanda tangan: ganda [] motong (int [] x, int [] y)
(pastikeun metode anjeun umum)

catetan

  • Arah positif sapanjang sumbu-x nyaéta 0 (radian), arah positif sapanjang sumbu-y nyaéta pi/2 (radian).
  • A cut dina arah d sarupa jeung cut dina pi * k + d arah pikeun sagala integer k.
  • Anjeun tiasa kaluaran sagala arah, aranjeunna teu kudu ti [0, pi).
  • Tukang kelas bakal ngitung luas genep potongan kueh anjeun dina dua kali. Jawaban bakal ditarima lamun bédana relatif atawa mutlak antara aranjeunna kirang ti 10 ^ (-4).
  • Leuwih tepat, hayu X jeung Y jadi pangleutikna jeung pangbadagna genep wewengkon Anjeun diitung ku grader. Lajeng jawaban anjeun bakal ditarima lamun Y
  • (Vérsi aslina tina masalah dipaké precision of 1e-7 tinimbang 1e-4. Pikeun ngajawab masalah ieu dina arsip, wates precision ieu lowered alatan ayana nelepon kasus nu dipikaresep bakal nyieun masalah unsolvable kalawan precision a. tina 1e-7. Dina dunya idéal, wates teu ngidinan kasus sapertos na masih merlukeun precision tinggi, jadi ngarengsekeun masalah kalawan sababaraha optimasi numeris umum teu gampang.)

larangan

  • x ngandung ti 3 nepi ka 50 elemen inklusif.
  • y ngandung jumlah elemen sarua salaku x.
  • kabéh koordinat antara 0 jeung 10 inklusif
  • x jeung y nangtukeun poligon cembung dina arah lawan jarum jam.

Aslina dina basa Inggris

Pernyataan Masalah

Wates waktos nyaéta 4 detik.

Anjeun gaduh jajan. Ditempo ti luhur, jajan téh (kaku) polygon convex. Anjeun dibéré koordinat titik na dina int [] sx jeung y.

Anjeun gaduh lima babaturan. Ayeuna rék motong jajan kana genep lembar wewengkon sarua (tapi teu merta sarua bentuk). Tangtosna, saha waé tiasa ngalakukeun éta dina lima potongan - tapi ngan ukur pro anu leres tiasa ngalakukeun éta dina tilu!

Manggihan tilu motong-garis lempeng ngaliwatan titik anu sarua nu motong jajan kana genep bagian sarua badag. Balik deui {x, y, d1, d2, d3}, dimana (x, y) mangrupakeun titik umum tina tilu motong, sarta d1, d2, d3 mangrupakeun arah maranéhanana dina radian.

panjelasan

Kelas: CakeForSix
Métode: motong
Parameter: int [], int [] Wangsul: ganda [] Métode tanda tangan: ganda [] motong (int [] x, int [] y)
(pastikeun metode anjeun umum)

Catetan
- Arah positif sapanjang sumbu x nyaéta 0 (radian), arah positif sapanjang sumbu y nyaéta pi/2 (radian).
- A cut dina arah d sarua jeung cut dina arah pi*k+d pikeun sagala integer k.
- Anjeun tiasa uih deui arah mana waé, aranjeunna henteu kedah ti [0,pi).
— Tukang kelas bakal ngitung daérah genep potongan kuéh anjeun dina dua kali. Jawaban bakal ditarima lamun bédana relatif atawa mutlak antara aranjeunna kirang ti 10 ^ (-4).
- Leuwih tepat, hayu X jeung Y jadi pangleutikna jeung panggedéna genep wewengkon Anjeun, sakumaha diitung ku grader. Lajeng, jawaban anjeun bakal ditarima lamun Y <max( X + 10^(-4), X * (1+10^(-4)) ).
- (Vérsi aslina tina masalah dipaké 1e-7 precision tinimbang 1e-4. Pikeun upsolving masalah ieu dina arsip wates precision ieu lowered alatan ayana kasus tantangan nu paling dipikaresep nyieun tugas unsolvable kalawan 1e-7 precision. Dina dunya idéal, konstrain henteu bakal ngijinkeun kasus sapertos kitu sareng masih meryogikeun presisi anu luhur, supados henteu gampang pikeun ngabéréskeun masalah ku sababaraha optimasi numerik umum.)

Batasan
- x bakal mibanda antara 3 jeung 50 elemen, inklusif.
- y bakal boga jumlah elemen sarua salaku x.
- Sadaya koordinat bakal antara 0 sareng 10,000, kalebet.
- x jeung y bakal ngajelaskeun polygon convex dina urutan counterclockwise.

conto

0)

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

Sagi genep simetris tapi henteu teratur. Jawaban conto pakait jeung motong eta dina satengah horizontal sarta nyieun dua motong séjén handap puseur nu ngabagi unggal sapotong jadi tilu lembar.

Tantangan TopCoder Open 2019: potong pai kana genep lembar

1)

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

segitiga katuhu. Sakali deui, urang tiasa ngamimitian ku salah sahiji tina tilu potongan sapanjang sumbu simétri.

Tantangan TopCoder Open 2019: potong pai kana genep lembar

2)

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

pentagon henteu teratur.

Tantangan TopCoder Open 2019: potong pai kana genep lembar

3)

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

Hiji pasagi diputer 45 derajat.

Tantangan TopCoder Open 2019: potong pai kana genep lembar

[sumber]

Ngan pamaké nu kadaptar bisa ilubiung dina survey. Daptar, Punten.

Kuring direngsekeun masalah pikeun

  • dina kirang ti 10 menit

  • 10-30 menit

  • 30-60 menit

  • Jam 1-2

  • dina leuwih ti 2 jam

  • nu lain

42 pamaké milih. 47 pamaké abstained.

sumber: www.habr.com

Tambahkeun komentar