AMcoder - javascript, python, java, html, php, sql

Ալգո՝ երկիրը ֆիքսված հատվածների բաժանելու համար: Այնուհետև ալգո՝ տեսնելու, թե տվյալ լայնությունը, երկայնությունը և շառավիղը որ շրջաններն են համընկնում

Իրական ժամանակի վարդակ/ալիք ստեղծելու համար ինձ անհրաժեշտ են դիսկրետ արժեքներ, օրինակ՝ անուն ունեցող զրուցասենյակ (սենյակ 1, սենյակ 2 և այլն), որտեղ օգտատերն ունի սահմանափակ թվով նախապես սահմանված տարբերակներ, որոնց կարող է ընտրել/բաժանորդագրվել:

Իմ նոր նախագծի համար իրական ժամանակի իրերը տեղի են ունենում քարտեզի վրա: Այսպիսով, օգտվողներն ուղարկում են լայնություն, երկայնություն և շառավիղ, ցանկացած իրադարձություն, որը տեղի է ունենում այդ տեսադաշտում, նրանց կուղարկվի իրական ժամանակում: Սա իսկապես շարունակական է (յուրաքանչյուր օգտվողի արժեք, հավանաբար, եզակի է), ուստի շատ ավելի դժվար է նախապես սահմանել վարդակներ/ալիքներ օգտագործողի համար:

Ահա իմ ներկայիս գաղափարն այն մասին, թե ինչպես դա աշխատի:

  1. Կոտրեք գլոբուսը ստատիկ, ֆիքսված չափի քառակուսիների: (ցանկացած լայնություն, գուցե մոտ 500 մ ^ 2): Սրանք այժմ մեր դիսկրետ վարդակներ/ալիքներն են:

  2. Երբ օգտատերը ուղարկում է lat, lng, շառավիղ, գտնում է այն քառակուսիները, որոնք ծածկում է նրա քարտեզը, ավելացրեք դրանք յուրաքանչյուր ալիքի/վարդակից:

  3. Որոշ կետեր, որոնք գտնվում են «քառակուսի» մեջ, կարող են չլինել օգտվողների իրական տեսադաշտում, ուստի հաճախորդի կողմը պետք է ստուգի յուրաքանչյուր թարմացում և ցուցադրի այն, եթե այն տեղին է, կամ հակառակ դեպքում անտեսի այն:

Ահա ցույց տալու պատկեր

  • Կապույտ կետը օգտվողն է
  • Մենք օգտվողին կավելացնեինք 16,17,18, 26,27,28,36,37,38 ալիքներում:
  • Թե կարմիր, թե դեղին կետը (քառակուսի 16-ում) իրական ժամանակում կտեղափոխվեն օգտվողին:
  • Դեղին կետը տեղին է և տեսանելի, ուստի այն կավելացվի
  • Կարմիր կետը օգտվողների տեսադաշտում չէ, ուստի այն անտեսվում է:

Իմ հարցերը. 1. Կա՞ դա անելու ավելի լավ միջոց:

  1. Այս տեսակի խնդրի/խնդրի անուն կա՞:

  2. Կա՞ գոյություն ունեցող լուծում/ալգորիթմ/գրադարան այս տեսակի խնդրի համար:

  3. Ինչպես կարող եմ…

    ա. գլոբուսը բաժանեք ֆիքսված չափի, միատեսակ, համարակալված քառակուսիների:

    բ. տրված է lng, lat, շառավիղ - հաշվարկեք, թե որ քառակուսիներն են համապատասխան տվյալ օգտագործողի համար:

Շնորհակալություն։


Պատասխանները:


1

Այս տեսակի խնդրի/խնդրի անուն կա՞:

Տարածական ինդեքսավորում

Կա՞ գոյություն ունեցող լուծում/ալգորիթմ/գրադարան այս տեսակի խնդրի համար:

Վստահ եմ, որ կան ուրիշներ (և գուցե նույնիսկ մեկը, որն աշխատում է քառակուսիների վրա), բայց այս միտքը ծագեց.

http://www.skyserver.org/htm/Old_default.aspx

Քառակուսիների փոխարեն օգտագործում է եռանկյուններ, բայց դա նույն գաղափարն է: Վստահ չեմ, թե արդյոք այն ինքնին աջակցում է շառավղային որոնումին, բայց դուք կարող եք կոպիտ հարցում անել և կատարելագործել, ինչպես անում եք ձեր օրինակում:

Այլընտրանք, եթե դուք պարզապես փորձում եք գտնել մոտակա օգտատերերին, կարող եք անել kd-tree-ի նման մի բան՝ մոտակա հարևանների որոնմամբ (սա շեղում է ձեր գաղափարից, բայց ես վստահ չեմ, թե որն է ունենալու հարաբերական արժեքը հսկայական թվով վարդակներ/ալիքներ կլինեն. դուք կարող եք դրանք ստեղծել ըստ պահանջի այս կերպ՝ հիմնվելով K մակարդակի եռանկյունու ID-ի վրա, որտեղ K-ն հիմնված է ձեր ընտրած ամենափոքր միջակայքի վրա):

https://en.wikipedia.org/wiki/K-d_tree#Nearest_neighbour_search

03.04.2016
Նոր նյութեր

Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..