
JĂ€lgedel avaldan ĂŒlesandeid algoritmi rajalt (klassikaline spordiprogrammeerimine. Poolteise tunni jooksul tuleb lahendada kolm ĂŒlesannet keeles Java, C#, C++ vĂ”i Python.)
1. Tort kuuele
Ălesande seadmine
Aja limiit â 4 sekundit.
Teil on tort. ĂkskĂ”ik millisest vaatenurgast vaadates, tort on (kindlasti) kumer mitmik. Teile on antud tippude koordinaadid tĂ€isarvudes X ja Y.
Teil on viis sĂ”pra. Te soovite jagada tordi kuue vĂ”rdsesse pindala (aga mitte tingimata sama kujuga) ossa. Loomulikult vĂ”ib igaĂŒks selle teha viie lĂ”ikega, kuid ainult professionaal suudab seda teha kolme lĂ”ikega.
Leidke kolm lĂ”iget sirgete joontega lĂ€bi ĂŒhe punkti, mis jagavad torti kuue vĂ”rdses pindalas osaks. Tootke {x, y, d1, d2, d3}, kus (x, y) on kĂ”igi kolme lĂ”ike ĂŒhine punkt, ja d1, d2, d3 â lĂ”ikete suunad radiaanides.
MÀÀratlusKlass: CakeForSix
Meetod: cut
Parameetrid: int[], int[]
Tagastab: double[]
Meetodi allkiri: double[] cut(int[] x, int[] y)
(veenduge, et teie meetod oleks avalik)
MĂ€rkus
- Positiivne suund x-teljel on 0 (radian), positiivne suund y-teljel on pi/2 (radian).
- LÔik suunas d on sama, mis lÔik suunas pi*k+d igasuguste tÀisarvude k jaoks.
- Saate esitada mis tahes suundi, need ei pea tingimata olema vahemikus [0, pi).
- Hinnang arvutab teie kuue tĂŒkikese pindalad doubles. Vastus aktsepteeritakse, kui suhteline vĂ”i absoluutne erinevus nende vahel on vĂ€iksem kui 10^(-4).
- TÀpsemalt, olgu X ja Y teie kuue ala vÀikseim ja suurim, arvutatud hinnangu poolt. Siis aktsepteeritakse teie vastust, kui Y < max(X + 10^(-4), X * 1 + 10^(-4))).
- (Algversioonis kasutati tĂ€psust 1e-7 asemel 1e-4. Selle probleemi lahendamiseks arhiivis vĂ€hendati tĂ€psuse piiri, kuna esines juhtumeid, mis tĂ”enĂ€oliselt muudavad ĂŒlesande lahendamatu tĂ€psusega 1e-7. Ideaalmaailmas ei tohiks piirangud selliseid juhtumeid lubada ja nĂ”uavad endiselt kĂ”rget tĂ€psust, seega on selle probleemi lahendamine teda ĂŒhise numbrilise optimeerimise abil keeruline.)
Piirangud
- x sisaldab 3 kuni 50 elementi sealhulgas.
- y sisaldab sama arvu elemente nagu x.
- kÔik koordinaadid vahemikus 0 kuni 10 000 sealhulgas
- x ja y mÀÀravad kumerat mitmikut vastupÀeva.
Originaal inglise keeles
Probleemi mÀÀratlus
Ajalimiit on 4 sekundit.
Sul on kook. Pealt vaadates on kook (rangelt) konveksne polĂŒgoon. Sul on antud selle tippude koordinaadid int[]des x ja y.
Sul on viis sĂ”pra. Soovid nĂŒĂŒd kooki lĂ”igata kuue vĂ”rdselt suure (kuigi mitte tingimata vĂ”rdselt kuju) tĂŒkiks. Loomulikult saab seda teha viie lĂ”ikega â aga ainult tĂ”eline proff oskab seda teha kolme lĂ”ikega!
Leia kolm sirgjoonelist lĂ”iget, mis lĂ€bivad sama punkti ja jagavad kooki kuue vĂ”rdselt suureks osaks. Tagasta {x, y, d1, d2, d3}, kus (x, y) on kolme lĂ”ike ĂŒhine punkt, ja d1, d2, d3 on nende suunad radiaanides.
MÀÀratlus
Klass: CakeForSix
Meetod: cut
Parameetrid: int[], int[]
Tagastab: double[]
Meetodi allkiri: double[] cut(int[] x, int[] y)
(veenduge, et teie meetod oleks avalik)
MĂ€rkused
â Positiivne suund x-teljel on 0 (radians), positiivne suund y-teljel on pi/2 (radians).
â LĂ”ige suunal d on sama mis lĂ”ige suunal pi*k+d, kus k on mistahes tĂ€isarv.
â Sa vĂ”id tagastada mis tahes suundi, need ei pea olema vahemikus [0, pi).
â Hinnamismoodul arvutab su koogi kuue tĂŒkikese pindalad kahekordsete arvudena. Vastus aktsepteeritakse, kui nende suhteline vĂ”i absoluutne erinevus on vĂ€iksem kui 10^(-4).
â TĂ€psemalt, olgu X ja Y su koogi kuue tĂŒkikese pindalade vĂ€ikseim ja suurim, nagu arvutas hinnamismoodul. Siis aktsepteeritakse sinu vastust, kui Y < max(X + 10^(-4), X * (1+10^(-4))).
â (Probleemi originaalversioon kasutas 1e-7 tĂ€psust, mitte 1e-4. Selle ĂŒlesande arhiivi ĂŒlelaskmiseks vĂ€hendati tĂ€psuse piiri, kuna eksisteerib vĂ€ljakutse juhtumeid, mis tĂ”enĂ€oliselt muudavad ĂŒlesande lahendamise 1e-7 tĂ€psusega praktiliselt vĂ”imatuks. Ideaalsetes tingimustes ei lubaks nĂ”uded selliseid juhtumeid ja siiski vajavad kĂ”rget tĂ€psust, mistĂ”ttu ei ole probleemi lihtne lahendada kasutades ĂŒldist numbrilist optimeerimist.)
Piirangud
â x sisaldab 3 kuni 50 elementi, sealhulgas.
â y-l on sama palju elemente kui x-l.
â KĂ”ik koordinaadid on vahemikus 0 kuni 10,000, sealhulgas.
â x ja y kujutavad konveksset polĂŒgooni vastupĂ€eva.
NĂ€ited
0)
{0, 20, 30, 50, 30, 20}
{10, 0, 0, 10, 20, 20}
Tagasta:
{24.999999999437453, 9.999999999500002, 0.0, 0.7266423406817211, 2.4149503129080787 }
SĂŒmmeetriline, kuid mitte regulaarne kuusnurks. Vastuse nĂ€ide vastab kooki horisontaalselt pooleks lĂ”hkumisele ja kahe teise lĂ”ike tegemisele keskelt, mis jagab iga osa kolmeks osaks.

1)
{0, 1000, 0}
{0, 0, 1000}
Tagasta:
{333.3333333331763, 333.3333333332546, 0.7853981633986264, 2.0344439357948154, 2.6779450445891753 }
Ăiguslik kolmnurk. JĂ€lle, saame alustada ĂŒhe kolmest lĂ”ikest sĂŒmmeetria telje mööda.

2)
{40, 70, 90, 90, 50}
{30, 20, 40, 100, 60}
Tagasta:
{69.79517771922892, 52.77575974637605, 2.0616329654335885, 3.637826104091601, 4.32123485812475 }
EbaÔige viiekand.

3)
{300, 400, 300, 200}
{500, 600, 700, 600}
Tagasta: {299.99999999974995, 599.9999999995, 0.0, 1.107148717794088, 2.034443935795705 }
Ruut, pööratud 45 kraadi.

[]
Ainult registreeritud kasutajad saavad kĂŒsitluses osaleda. , palun.
Löin mure Àra
vÀhem kui 10 minutiga
10-30 minutit
30-60 minutit
1-2 tundi
rohkem kui 2 tundi
muid
HÀÀletas 42 kasutajat. Hoidusid 47 kasutajat.
Allikas: habr.com
