Tantangan TopCoder Open 2019: potong kue dadi enem potong

Tantangan TopCoder Open 2019: potong kue dadi enem potong
Ing lakune "Kita menang: TopCoder Open 2019" Aku nerbitakΓ© masalah saka trek Algoritma (program olahraga klasik. Ing siji lan setengah jam sampeyan kudu ngatasi telung masalah ing Jawa, C #, C ++ utawa Python.)

1. Pie kanggo enem

Formulasi masalah

Watesan wektu yaiku 4 detik.

Sampeyan duwe pie. Yen dideleng saka ndhuwur, kue kasebut duwe bentuk poligon cembung (kenceng). Sampeyan diwenehi koordinat vertex ing X lan Y integers.

Sampeyan duwe kanca lima. Sampeyan pengin dibagi kue dadi enem potongan area sing padha (nanging ora kudu bentuk sing padha). Mesthi, sapa bisa nindakake ing limang ngethok, nanging mung pro bisa nindakake ing telung ngethok.

Temokake telung potongan ing garis lurus liwat siji titik sing bakal mbagi kue dadi enem bagean sing padha. Print {x, y, d1, d2, d3}, ing ngendi (x, y) minangka titik umum saka kabeh telung potong, lan d1, d2, d3 minangka sudut arah saka potongan ing radian.

DefinitionKelas: CakeForSix
Cara: Cut
Parameter: int[], int[] Ngasilake: dobel[] Tandha metode: dobel[] potong(int[] x, int[] y)
(pastikan metode sampeyan umum)

Cathetan

  • Arah positif ing sumbu x yaiku 0 (radian), arah positif ing sumbu y yaiku pi/2 (radian).
  • Potongan ing arah d padha karo potongan ing arah pi*k+d kanggo sembarang integer k.
  • Sampeyan bisa output sembarang arah, padha ora kudu saka [0, pi).
  • Grader bakal ngetung area enem potong jajan ing pindho. Jawaban bakal ditampa yen prabΓ©dan relatif utawa mutlak antarane wong-wong mau kurang saka 10 ^ (-4).
  • Luwih tepate, supaya X lan Y dadi paling cilik lan paling gedhe saka enem wilayah sing diwilang dening grader. Banjur jawaban sampeyan bakal ditampa yen Y
  • (Versi asli saka masalah kasebut nggunakake presisi 1e-7 tinimbang 1e-4. Kanggo ngatasi masalah iki ing arsip, watesan presisi diturunake amarga ana kasus telpon sing bisa nyebabake masalah kasebut ora bisa diatasi kanthi presisi. saka 1e-7. Ing donya becik, watesan ora ngidini kasus kaya mengkono lan isih mbutuhake presisi dhuwur, supaya mecahaken masalah karo sawetara Optimization numerik umum ora gampang.)

Watesan

  • x ngemot saka 3 kanggo 50 unsur klebu.
  • y ngemot jumlah unsur sing padha karo x.
  • kabeh koordinat antarane 0 lan 10 klebu
  • x lan y nemtokake poligon cembung ing arah arah jarum jam.

asli ing basa Inggris

Pernyataan Masalah

Watesan wektu yaiku 4 detik.

Sampeyan duwe jajan. Dideleng saka ndhuwur, kue kasebut minangka poligon cembung (kenceng). Sampeyan diwenehi koordinat vertex ing int [] sx lan y.

Sampeyan duwe kanca lima. Sampeyan saiki pengin Cut jajan menyang enem bΓͺsik area padha (nanging ora kudu padha wangun). Mesthi wae, sapa wae bisa nindakake kanthi limang potongan - nanging mung profesional sejati sing bisa nindakake ing telung!

Temokake telung potongan garis lurus sing ngliwati titik sing padha sing ngethok kue dadi enem bagean sing padha. Bali {x, y, d1, d2, d3}, ing ngendi (x, y) minangka titik umum saka telung potong, lan d1, d2, d3 minangka arah ing radian.

Definition

Kelas: CakeForSix
Cara: Cut
Parameter: int[], int[] Ngasilake: dobel[] Tandha metode: dobel[] potong(int[] x, int[] y)
(pastikan metode sampeyan umum)

Cathetan
- Arah positif ing sumbu x yaiku 0 (radian), arah positif ing sumbu y yaiku pi/2 (radian).
- Potong ing arah d padha karo potong ing arah pi * k + d kanggo sembarang integer k.
β€” Sampeyan bisa bali sembarang arah, padha ora kudu saka [0,pi).
- Grader bakal ngetung area enem potongan kue sampeyan dadi ganda. Jawaban bakal ditampa yen prabΓ©dan relatif utawa mutlak antarane wong-wong mau kurang saka 10 ^ (-4).
- Luwih tepate, supaya X lan Y dadi sing paling cilik lan paling gedhe saka enem wilayah sampeyan, sing diitung dening grader. Banjur, jawaban sampeyan bakal ditampa yen Y < max( X + 10^(-4), X * (1+10^(-4)) ).
- (Versi asli saka masalah digunakake 1e-7 tliti tinimbang 1e-4. Kanggo upsolving masalah iki ing arsip watesan tliti sudo amarga ana kasus tantangan sing paling kamungkinan nggawe tugas unsolvable karo 1e-7 tliti. Ing donya sing becik, kendala ora bakal ngidini kasus kasebut lan isih mbutuhake presisi sing dhuwur, saengga ora gampang ngatasi masalah kasebut liwat sawetara optimisasi angka umum.)

Batesan
- x bakal duwe antarane 3 lan 50 unsur, klebu.
- y bakal duwe jumlah unsur sing padha karo x.
β€” All coordinates will be between 0 and 10,000, inclusive.
- x lan y bakal njlèntrèhaké poligon cembung ing urutan counterclockwise.

conto

0)

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

Hexagon simetris nanging ora duwe aturan baku. Jawaban conto cocog karo ngethok setengah horisontal lan nggawe rong potongan liyane ing tengah sing dibagi saben potongan dadi telung potongan.

Tantangan TopCoder Open 2019: potong kue dadi enem potong

1)

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

Segitiga tengen. Maneh, kita bisa miwiti kanthi salah siji saka telung potongan ing sumbu simetri.

Tantangan TopCoder Open 2019: potong kue dadi enem potong

2)

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

Pentagon ora teratur.

Tantangan TopCoder Open 2019: potong kue dadi enem potong

3)

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

A kothak muter 45 derajat.

Tantangan TopCoder Open 2019: potong kue dadi enem potong

[Sumber]

Mung pangguna pangguna sing bisa melu survey. mlebunggih.

Aku ditanggulangi masalah kanggo

  • kurang saka 10 menit

  • 10-30 menit

  • 30-60 menit

  • Jam 1-2

  • ing luwih saka 2 jam

  • liyane

42 pangguna milih. 47 pangguna abstain.

Source: www.habr.com

Add a comment