Loading...
Vankata83 avatar Vankata83 72 Точки

STL Associative Containers Miners

Здравейте колеги.

Имам проблем с тази задача - хвърля ми time limit грешка на последните два теста.

Задачата съм я решил с един мап и един вектор, който да пази insertion order.

Първоначално си мислех да я "излъжа" като по някакъв начин вкарвам пр. буква към ключа и по този начин да пазя този ред.

Естествено не сработи, понеже когато се подаде същия ключ като вход няма как да го разпозная че го има вече.

Имаше една дискусия тук за ресурсите и времето, което отнема да се изпълни кода - повече MB по - малко време и обратно.

Казвам общо освен ако нещо тотално не съм разбрал.

Някой може ли да даде някакви насоки за time limit- а или вече главата ми е прекалено забъгнала и въобще не мисля в правилната посока.

Благодаря.

PS На теста тотално се изложих, но пък след това, като се поразмислих над отговорите, ми светнаха, някои неща.

Така че - има смисъл давайте смело :)

Тагове:
0
C++ Fundamentals
spasimira25 avatar spasimira25 25 Точки

Галине, за пореден път, благодаря. Направо ме разби. Преди 2-3 дни за първи път видях въвеждане вътре в условието  на цикъла. (Не знам дали така се нарича де). Не знаех, че е 10-20 пъти по-бързо. Пробвах с emplace_back, със short, с дабъл и с какво ли още не. Само така тръгна.

Поздрави, Тошо.

 

1
19/10/2019 20:13:15
galin_kostadinov avatar galin_kostadinov 166 Точки

Привет, Тошко :)

Аз го ползвам по този начин, като така ако има грешен вход(не е въведено това, което се изисква string и int) ми връша false.

Другото предимство, е че четеш само на едно място, не дублираш на няколко места - преди цъкала и в края на него, като така си гарантираш, че няма да пропуснеш едното четене.

Поздрави!

1
SylviaNikolova avatar SylviaNikolova 20 Точки

И аз много благодаря за hint-а! 

0
kolioi avatar kolioi 641 Точки

Може да използваш std::unordered_map вместо std::map. Задачата може да се реши без map, а само с vector.

0
Vankata83 avatar Vankata83 72 Точки

С std::unordered_map пак ми дава същите грешки

Пробвах вектор от pair, но пък не мога да променя стойността на вторя елемент от pair - а, ако дойде материал, който вече съществува.

Пробвам std::get<1>(pair) = новата сотйност, но нещо не се получава.

По този начин ми гърмят първите два теста, но последните два пак си остават time limit.

0
kolioi avatar kolioi 641 Точки

Идеята е следната: прочитаме някакъв ресурс (име + количество) и проверяваме дали вече го има в нашия контейнер (мап или вектор). Ако го няма - добавяме го, ако вече е там - увеличаваме количеството.

0
l000p avatar l000p 13 Точки

Здравейте и аз се натъкнах на този препъни камък ... 

Според миналия коментар на kolioi, изпълнявам същата логика. 

Ето го моето решение: https://pastebin.com/H5QtTyYs

kolioi ако трябва да са реши само с вектор, би трябвало да стане с вектор от вектори или бъркам ? 

0
19/10/2019 16:42:40
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.