TopCoder ክፍት የ2019 ፈተና፡ ኬክን ወደ ስድስት ቁርጥራጮች ይቁረጡ

TopCoder ክፍት የ2019 ፈተና፡ ኬክን ወደ ስድስት ቁርጥራጮች ይቁረጡ
በዱካዎቹ ውስጥ "የእኛ አሸንፈዋል፡ TopCoder ክፍት 2019" ችግሮችን ከአልጎሪዝም ትራክ አትሜያለሁ (ክላሲካል ስፖርታዊ ፕሮግራሞች በአንድ ሰዓት ተኩል ውስጥ በጃቫ፣ ሲ#፣ ሲ++ ወይም ፒቲን ሶስት ችግሮችን መፍታት አለቦት።)

1. ኬክ ለስድስት

የችግሩ ቀመር

የጊዜ ገደቡ 4 ሰከንድ ነው።

ኬክ አለህ። ከላይ ሲታይ, ኬክ (ጥብቅ) ኮንቬክስ ፖሊጎን ቅርጽ አለው. በX እና Y ኢንቲጀሮች ውስጥ የቋሚዎቹ መጋጠሚያዎች ይሰጡዎታል።

አምስት ጓደኞች አሉህ. ቂጣውን ወደ ስድስት እኩል ስፋት ያላቸውን ክፍሎች መከፋፈል ይፈልጋሉ (ግን የግድ ተመሳሳይ ቅርጽ አይደለም). እርግጥ ነው, ማንም ሰው በአምስት መቁረጫዎች ውስጥ ሊያደርገው ይችላል, ነገር ግን ፕሮፌሽናል ብቻ በሶስት ቆርጦዎች ሊሠራ ይችላል.

ቂጣውን ወደ ስድስት እኩል ክፍሎችን የሚከፍለው በአንድ ነጥብ በኩል ሶስት ቀጥ ያሉ መስመሮችን ያግኙ። አትም {x, y, d1, d2, d3}, (x, y) የሶስቱም መቁረጦች የጋራ ነጥብ ሲሆን d1, d2, d3 በራዲያን ውስጥ የመቁረጫ አቅጣጫዎች ናቸው.

መግለጫክፍል: CakeForSix
ዘዴ: መቁረጥ
መለኪያዎች፡ int[]፣ int[] ይመልሳል፡ እጥፍ[] ዘዴ ፊርማ፡ ድርብ[] ቁረጥ(int[] x፣ int[] y)
(የእርስዎ ዘዴ ይፋዊ መሆኑን ያረጋግጡ)

ማስታወሻዎች

  • በ x-ዘንግ በኩል ያለው አወንታዊ አቅጣጫ 0 (ራዲያን) ነው፣ በ y-ዘንጉ በኩል ያለው አወንታዊ አቅጣጫ ፒ/2 (ራዲያን) ነው።
  • በዲ አቅጣጫ መቁረጥ ለማንኛውም ኢንቲጀር k በ pi*k+d አቅጣጫ ከተቆረጠ ጋር ተመሳሳይ ነው።
  • ማንኛውንም አቅጣጫዎች ማውጣት ይችላሉ, እነሱ ከ [0, pi) መሆን የለባቸውም.
  • ክፍል ተማሪው የስድስቱን የኬክ ቦታ በእጥፍ ያሰላል። በመካከላቸው ያለው አንጻራዊ ወይም ፍጹም ልዩነት ከ10^(-4) በታች ከሆነ መልሱ ተቀባይነት ይኖረዋል።
  • ይበልጥ በትክክል፣ X እና Y በክፍል ሰሪው ከተሰሉት ከስድስት አካባቢዎችዎ ትንሹ እና ትልቁ ይሁኑ። ከዚያ መልስዎ Y ከሆነ ተቀባይነት ይኖረዋል
  • (የመጀመሪያው የችግሩ እትም ከ1e-7 ይልቅ 1e-4 ትክክለኛነት ተጠቅሟል። ይህንን ችግር በማህደር ውስጥ ለመፍታት፣የጥሪ ጉዳዮች በመኖራቸው ትክክለኛነቱ ገደቡ ቀንሷል፣ይህም ችግሩ በትክክል ሊፈታ የማይችል ሊሆን ይችላል። የ 1e-7. ተስማሚ በሆነ ዓለም ውስጥ, ገደቦቹ እንደዚህ አይነት ጉዳዮችን አይፈቅዱም እና አሁንም ከፍተኛ ትክክለኛነትን ይጠይቃሉ, ስለዚህ ችግሩን በአንዳንድ አጠቃላይ የቁጥር ማመቻቸት መፍታት ቀላል አይደለም.)

ገደቦች

  • x ከ3 እስከ 50 የሚደርሱ ንጥረ ነገሮችን ያካትታል።
  • y እንደ x ተመሳሳይ የንጥረ ነገሮች ብዛት ይዟል።
  • ሁሉም በ0 እና በ10 መካከል መጋጠሚያዎች ናቸው።
  • x እና y የኮንቬክስ ፖሊጎን በተቃራኒ ሰዓት አቅጣጫ ይገልፃሉ።

ኦሪጅናል በእንግሊዝኛ

የችግሩ መግለጫ

የጊዜ ገደቡ 4 ሰከንድ ነው።

ኬክ አለህ። ከላይ ሲታይ, ኬክ (ጥብቅ) ኮንቬክስ ፖሊጎን ነው. የዳርቻዎቹን መጋጠሚያዎች በ int[]sx እና y ውስጥ ይሰጥዎታል።

አምስት ጓደኞች አሉህ. አሁን ኬክን ወደ ስድስት ክፍሎች እኩል ቦታ መቁረጥ ይፈልጋሉ (ግን የግድ እኩል ቅርጽ አይደለም). በእርግጥ ማንም ሰው በአምስት መቁረጫዎች ውስጥ ማድረግ ይችላል - ግን እውነተኛ ፕሮፌሽናል ብቻ በሦስት ውስጥ ሊያደርገው ይችላል!

ኬክን ወደ ስድስት እኩል ትላልቅ ክፍሎች የሚቆርጡትን በተመሳሳይ ነጥብ የሚያልፉ ሶስት ቀጥታ መስመር ቁርጥራጮችን ያግኙ። ተመለስ {x, y, d1, d2, d3}, የት (x, y) የሶስቱ መቁረጦች የጋራ ነጥብ ነው, እና d1, d2, d3 በራዲያን ውስጥ አቅጣጫቸው ናቸው.

መግለጫ

ክፍል: CakeForSix
ዘዴ: መቁረጥ
መለኪያዎች፡ int[]፣ int[] ይመልሳል፡ እጥፍ[] ዘዴ ፊርማ፡ ድርብ[] ቁረጥ(int[] x፣ int[] y)
(የእርስዎ ዘዴ ይፋዊ መሆኑን ያረጋግጡ)

ማስታወሻዎች
- በ x ዘንግ በኩል ያለው አወንታዊ አቅጣጫ 0 (ራዲያን) ነው ፣ በ y ዘንግ በኩል ያለው አወንታዊ አቅጣጫ ፒ / 2 (ራዲያን) ነው።
- በአቅጣጫ መ የተቆረጠ አቅጣጫ pi*k+d ለማንኛውም ኢንቲጀር k ከተቆረጠ ጋር ተመሳሳይ ነው።
- ማንኛውንም አቅጣጫዎች መመለስ ይችላሉ, እነሱ ከ [0,pi) መሆን የለባቸውም.
— ክፍል ተማሪው የስድስቱን ኬክ ቁርጥራጭ ቦታዎችን በእጥፍ ያሰላል። በመካከላቸው ያለው አንጻራዊ ወይም ፍጹም ልዩነት ከ10^(-4) በታች ከሆነ መልሱ ተቀባይነት ይኖረዋል።
— በትክክል፣ X እና Y በክፍል አዋቂው እንደተሰሉት ከስድስት አካባቢዎችዎ ትንሹ እና ትልቁ ይሁኑ። ከዚያ መልስህ Y <max( X + 10^(-4)፣ X * (1+10^(-4))) ከሆነ ተቀባይነት ይኖረዋል።
- (የችግሩ የመጀመሪያ እትም ከ1e-7 ይልቅ 1e-4 ትክክለኛነት ተጠቅሟል። ይህንን ችግር በማህደር ውስጥ ለመፍታት ትክክለኛ ገደቡ ቀንሷል ፈታኝ ጉዳዮች በመኖራቸው ምናልባትም ተግባሩ በ1e-7 ትክክለኛነት ሊፈታ የማይችል በመሆኑ ትክክለኛነቱ ገደቡ ቀንሷል። በጥሩ ዓለም ውስጥ እንደዚህ ያሉ ጉዳዮችን አይፈቅዱም እና አሁንም ከፍተኛ ትክክለኛነትን ይፈልጋሉ ፣ ስለሆነም ችግሩን በአንዳንድ አጠቃላይ የቁጥር ማመቻቸት በኩል መፍታት ቀላል አይደለም።)

እንቅፋቶች
— x በ3 እና 50 ኤለመንቶች መካከል ይኖሩታል፣ ​​ያጠቃል።
— y ከ x ጋር ተመሳሳይ የሆኑ ንጥረ ነገሮች ቁጥር ይኖረዋል።
— ሁሉም መጋጠሚያዎች በ0 እና 10,000 መካከል ይሆናሉ፣ ያካተቱ።
— x እና y የኮንቬክስ ፖሊጎን በተቃራኒ ሰዓት አቅጣጫ ይገልጻሉ።

ምሳሌዎች

0)

{0, 20, 30, 50, 30, 20}
{10, 0, 0, 10, 20, 20}
ተመላሾች
{24.999999999437453፣ 9.999999999500002፣ 0.0፣ 0.7266423406817211፣ 2.4149503129080787}

የተመጣጠነ ግን መደበኛ ያልሆነ ባለ ስድስት ጎን። የምሳሌው መልስ በግማሽ አግድም በመቁረጥ እና እያንዳንዱን ክፍል በሦስት ክፍሎች የሚከፍለውን መሃከል ሁለት ሌሎች ቁራጮችን ከማድረግ ጋር ይዛመዳል።

TopCoder ክፍት የ2019 ፈተና፡ ኬክን ወደ ስድስት ቁርጥራጮች ይቁረጡ

1)

{0, 1000, 0}
{0, 0, 1000}
ተመላሾች
{333.3333333331763፣ 333.3333333332546፣ 0.7853981633986264፣ 2.0344439357948154፣ 2.6779450445891753}

የቀኝ ሶስት ማዕዘን. እንደገና፣ በሲሜትሪ ዘንግ በኩል ከሶስቱ መቆራረጦች በአንዱ መጀመር እንችላለን።

TopCoder ክፍት የ2019 ፈተና፡ ኬክን ወደ ስድስት ቁርጥራጮች ይቁረጡ

2)

{40, 70, 90, 90, 50}
{30, 20, 40, 100, 60}
ተመላሾች
{69.79517771922892፣ 52.77575974637605፣ 2.0616329654335885፣ 3.637826104091601፣ 4.32123485812475}

መደበኛ ያልሆነ ፔንታጎን.

TopCoder ክፍት የ2019 ፈተና፡ ኬክን ወደ ስድስት ቁርጥራጮች ይቁረጡ

3)

{300, 400, 300, 200}
{500, 600, 700, 600}
ይመልሳል፡ {299.99999999974995፣ 599.9999999995፣ 0.0፣ 1.107148717794088፣ 2.034443935795705}

አንድ ካሬ 45 ዲግሪ ዞሯል.

TopCoder ክፍት የ2019 ፈተና፡ ኬክን ወደ ስድስት ቁርጥራጮች ይቁረጡ

[ምንጭ]

በዳሰሳ ጥናቱ ውስጥ የተመዘገቡ ተጠቃሚዎች ብቻ መሳተፍ ይችላሉ። ስግን እንእባክህን።

ችግሩን የፈታሁት ለ

  • ከ 10 ደቂቃዎች ባነሰ ጊዜ ውስጥ

  • 10-30 ደቂቃዎች

  • 30-60 ደቂቃዎች

  • 1-2 ሰዓታት

  • ከ 2 ሰዓታት በላይ

  • ሌላ

42 ተጠቃሚዎች ድምጽ ሰጥተዋል። 47 ተጠቃሚዎች ድምፀ ተአቅቦ አድርገዋል።

ምንጭ: hab.com

አስተያየት ያክሉ