Data Analyst
Byla jednou jedna stážistka proti podvodům v Yandex Ads, která se připojila k týmu. Zatímco skupina podvodníků byla aktivní, simulovala provoz na svých stránkách prostřednictvím botů, a tím získávala peníze za zobrazení reklamy od botů, úkolem stážistky bylo najít všechny takové podvodné stránky s falešným provozem. Zajímavé je, že veškerý provoz na těchto stránkách byl generován s IP substitucí, takže to vypadalo, jako by bot navštěvoval stránku z města A, ale ve skutečnosti bylo zařízení úplně jinde. Uplynulo hodně času a stážistka se snažila pokrýt celou tuto skupinu podvodníků, dokonce se jí podařilo částečně chytit některé stránky. Ale celou síť se jí nepodařilo chytit. Po nějaké době si všimla zprávy: ve městě A, dne 02.08.2025, úplně chyběl mobilní internet. Nicméně, kabelový (domácí) internet stále fungoval. S tímto vědomím, jak může stážistka najít všechny falešné stránky? Máte logy stránek ve formátu tabulky za období od 30.07.2025 do 10.08.2025: timestamp | site_id | city_id Každý záznam odpovídá návštěvě stránky jedním zařízením. Je známo, že botí provoz se mění podstatně méně než skutečný provoz denně. Vaším úkolem je najít všechny stránky, jejichž provoz se skládal převážně z botů, kteří falšovali svůj region na město A. Poznámka Tabulka obsahující data se nazývá logs. Příklad záznamu v tabulce: timestamp | site_id | city_id [phone]:13:53 | 6e84d9b71ca44aea | A
Afanasy již dva týdny pracoval na psaní kódu, který dokáže řešit japonské křížovky s podporou devíti barev, když mu na další schůzce kolega oznámil, že je schopen sám zvládnout úlohu rychleji, a v programu už nemá smysl. Ale Afanasy, jako optimista, se rozhodl věnovat této úloze ještě více času a udělat následující — spočítat, jak dobře si kolega poradí s křížovkami. Pro toto hodnocení si zvolil jakýsi ekvivalent metriky IoU — výpočet bude probíhat podobně jako klasické Intersection Over Union, ale podle barev. Pracuje to podle plánu takto: každé shodné políčko v originále a řešení podle barvy přidá 1 do čitatele, a do jmenovatele se přidá 1 za každé toto políčko v originále i řešení (za shodná políčka se přidá pouze jedna jednotka). Poté bude prováděno průměrování podle počtu barev v originálním obrázku, zaokrouhlené na dvě desetinná místa; nula není barvou, proto při výpočtech nestojí za to počítat metriku pro políčka této barvy. Na vstupu bude na první řádce zadáno, kolik řádků n a sloupců m (přesně v tomto pořadí) obsahuje původní obrázek. Poté následuje 2n řádků, obsahujících m čísel oddělených mezerou — první n řádků se týká odeslaného řešení křížovky, a následujících n řádků je původní obrázek. Předpokládá se, že na každém řádku, počínaje druhým, je přesně m čísel. Jako odpověď vypište jedno číslo zaokrouhlené na dvě desetinná místa, jak je uvedeno v příkladech. Několik příkladů: 1. První příklad [phone] -> 1.0 Vysvětlení: podíl shodných a neshodných buněk (1.0 + 1.0 + 1.0 + 1.0) / počet barev (4) 2. Druhý příklad [phone] -> 0.08 Vysvětlení: podíl shodných a neshodných buněk (0.25 + 0.0 + 0.0) / počet barev (3); nuly nepočítáme, ani jako buňky v reprezentacích, ani v počtu barev. 3. Třetí příklad [phone] zde začíná odeslaný obrázek [phone] -- zde končí odeslaný obrázek 0 1 2 -- zde začíná původní obrázek [phone] -> 0.47 Vysvětlení: podíl shodných a neshodných buněk (0.4 + 0.5 + 0.5) / počet barev (3); nuly nepočítáme ani jako buňky v reprezentacích, ani v počtu barev. 4. Čtvrtý příklad [phone] -> 0.0 Vysvětlení: podíl shodných a neshodných buněk (0.0) / počet barev (1); nuly nepočítáme ani jako buňky v reprezentacích, ani v počtu barev.
B. Předpony a Přípony Dán je seřazený pole n nul. V každém kroku můžete zvolit libovolný počet prvních nebo posledních prvků tohoto pole a přičíst k nim jedničku. Je možné dosáhnout požadovaného stavu pole po nějakém počtu takových operací? Formát vstupu První řádek obsahuje celé číslo 1 ≤ n ≤ 100000 — počet prvků pole. Druhý řádek obsahuje n nenegativních celých čísel a1, a2, ..., an oddělených mezerou, kde ai ≤ 10^18 — požadované konečné prvky. Formát výstupu Vytiskněte "YES", pokud je takový stav dosažitelný, a "NO", pokud není. Příklad Vstup [phone] Výstup YES Poznámka Stavy [phone] lze dosáhnout následujícím způsobem: přičtením jedničky k prvním třem prvkům, čímž získáme [phone] přičtením jedničky k posledním čtyřem prvkům, čímž získáme [phone] přičtením jedničky k poslednímu prvku, čímž získáme [phone]
D. Čínské ohňostroje Vladimir koupil sadu 3 čínských ohňostrojů. Vypadají naprosto stejně a jsou zamíchány v krabici, ale podle návodu mají různou spolehlivost: 1. "Elitní" — míra vad 10 % (pravděpodobnost úspěchu 0.9). 2. "Standard" — míra vad 20 % (pravděpodobnost úspěchu 0.8). 3. "Ekonomický" — míra vad 40 % (pravděpodobnost úspěchu 0.6). Vladimir náhodně vezme první ohňostroj, zapálí ho a ten úspěšně vystřelí. Šťastný Vladimir se rozhodne spustit zbývající dva ohňostroje jeden po druhém. Jaká je pravděpodobnost, že i druhý a třetí ohňostroj budou úspěšně vystřeleni — bez vady? Zaokrouhlete odpověď na tři desetinná místa.
Fungovala by navrhované řešení pro SQLite?
A. Nejlepší Vědecká Laboratoř V určitém městě se několik vědeckých laboratoří zabývá výzkumem bakteriálních kultur. Zkoumají sekvenci vzorků, kde každý vzorek patří k určitému kmenu (typu bakterií). Hlavní biologická výzkumná univerzita vyhlásila soutěž: najít maximální počet po sobě jdoucích vzorků, které lze analyzovat s ohledem na omezení. Konkrétně: v jakémkoli spojitém úseku sekvence by nemělo být více než K různých kmenů. Naše laboratoř usiluje stát se nejlepší ve městě. Abychom vyhráli soutěž, musíme najít právě takovou maximální délku úseku, která splňuje přísnou podmínku. Spoléháme na vás, protože v případě vítězství laboratoř obdrží grant, který otevře nové horizonty pro naše výzkumy. Formát vstupu První řádek obsahuje dvě čísla: N — délku sekvence vzorků a K — omezení na počet různých kmenů. Druhý řádek obsahuje N čísel — prvky sekvence. Formát výstupu Program by měl vytisknout číslo maximální délky úseku sekvence vzorků. Příklad 1 Vstup [phone] Výstup 3
D. Čínské ohňostroje Vladimir koupil sadu 3 čínských ohňostrojů. Vypadají naprosto stejně a jsou zamíchány v krabici, ale podle návodu mají různou spolehlivost: 1. "Elitní" — míra vad 10 % (pravděpodobnost úspěchu 0.9). 2. "Standard" — míra vad 20 % (pravděpodobnost úspěchu 0.8). 3. "Ekonomický" — míra vad 40 % (pravděpodobnost úspěchu 0.6). Vladimir náhodně vezme první ohňostroj, zapálí ho a ten úspěšně vystřelí. Šťastný Vladimir se rozhodne spustit zbylé dva jeden po druhém. Jaká je pravděpodobnost, že i druhý a třetí ohňostroj budou úspěšně vystřeleni — bez vady? Zaokrouhlete odpověď na tři desetinná místa.