Nu aveti permisiuni pentru a descarca fisierul grader_test6.ok

Diferente pentru monthly-2014/runda-2/solutii intre reviziile #12 si #4

Nu exista diferente intre titluri.

Diferente intre continut:

Pornind de la această observaţie, problema revine la setarea lungimii $k$ a şirului de caractere şi la parcurgerea caracterelor de la primul către ultimul. Pentru fiecare poziţie $i$, vom verifica dacă $Ai = Ai+k$. În momentul în care dăm peste $2*k$ poziţii consecutive care respectă această proprietate, este evident că am dat peste o secvenţă de tip triopalindrom, deci o vom număra. Complexitate: O(N^2^).
h1. 'Div4':problema/div4
 
Un număr este divizibil cu $4$ dacă restul împărţirii sale la $100$ este divizibil cu $4$. În alte cuvinte, un număr este divizibil cu $4$ dacă ultimele $2$ cifre ale sale sunt divizibile cu $4$. Pentru a ne apropia şi mai mult de rezolvarea problemei, vom spune că un număr este divizibil cu $4$ dacă:
 
* Penultima cifră a sa este impară, iar ultima cifră este $2$ sau $6$
* Penultima cifră a sa este pară, iar ultima cifră este $4$ sau $8$
 
Având în vedere că trebuie să eliminăm exact $K$ cifre şi că ne interesează ultimele $2$ cifre ale numărului rămas, ne vom concentra doar asupra ultimelor $K+2$ cifre ale numărului. Vom proceda în felul următor. Vom seta penultima cifră a numărului. Să presupunem ca am setat cifra de pe poziţia $i$ şi că numărul nostru are în total $C$ cifre. Dacă această cifră este impară, ne interesează numărul de apariţii ale cifrelor $2$ şi $6$, aflate în dreapta ei. Pentru ca cifra de pe poziţia $i$ şi cifrele de după să fie ultimele cifre din număr, va trebui şă ştergem exact $C-i-1$ cifre. Deci, vom avea de şters înca $K-(C-i-1)$ cifre din primele $i-1$. Avem exact combinări de $i-1$ luate câte $K-(C-i-1)$ modalităţi de a face acest lucru. Vom înmulţi acest număr cu numărul de apariţii ale cifrelor $2$ şi $6$ aflate în dreapta cifrei alese şi vom actualiza răspunsul. Vom proceda analog şi la setarea unei cifre pare.
 
h1. 'Dreapta':problema/dreapta
Pentru inceput trebuie observat ca orice punct din interiorul unui poligon are urmatoarea proprietate:
 
Pentru inceput trebuie observat orice punct din interiorul unui poligon are urmatoarea proprietate:
* Exista cel putin o dreapta care trece prin acel punct astfel incat daca se taie dreapta in doua semidrepte (cu capatul semidreptelor in punctul respectiv), ambele semidrepte intersecteaza poligonul intr-un numar impar de laturi.
 
Folosind aceasta observatie ne putem gandi la o abordare de genul urmator:
 
Folosind aceasta observatie ne putem gandi la abordare de genul urmator:
* Calculam punctele de intersectie ale dreptei pe care se afla toate punctele din query-uri cu laturile poligonului
* Sortam punctele de intersectie dupa $x$ si daca sunt egale dupa $y$
* Pentru fiecare punct din query se cauta binar pozitia pe care ar trebui sa o aiba in sirul sortat al punctelor de intersectie. Daca inainte si dupa pozitia ocupata in sir se gaseste un numar impar de puncte atunci punctul din query se afla in interiorul poligonului

Diferente intre securitate:

public
protected

Topicul de forum nu a fost schimbat.