Академический Документы
Профессиональный Документы
Культура Документы
Campus de Quixad
QXD0153 - Desaos de Programao
Lista 1
Responda as seguintes perguntas utilizando o seu conhecimento atual sobre algoritmos clssicos
e suas complexidades.
1. Existem n pginas na internet (1 n 107 ). Cada pgina i tem um page rank diferente
ri . Encontre as 10 pginas com os maiores page rank. Qual mtodo mais recomendada?
Justique sua resposta.
2. Dado um vetor esttico L com 10K inteiros, voc precisa frequentemente obter sum(i, j) =
L[i] + L[i + 1] + . . . + L[j]. Qual a estrutura de dados mais recomendada? Justique sua
resposta.
(a) Para cada consulta, utilize um vetor simples para calcular L[i] + L[i + 1] + . . . + L[j] em
O(N ).
(a) Tente todas as possveis sub-matrizes e cheque se a mdia de cada submatriz 7. Este
algoritmo roda em O(M 3 N 3 )
4. Qual algoritmo produz uma lista dos primeiros 10K nmeros primos com a melhor complexidade
de tempo?
5. Voc quer saber quantos zeros tem no nal de 100!. O que voc deve fazer?
1
6. Voc quer testar se o fatorial de n divisvel por m, onde 1 n 10000. O que voc deve
fazer?
7. Voc quer enumerar todas as ocorrncias de uma substring P (de tamanho m) em uma string
T (de tamanho n). Ambos n e m tem no mximo 1M de caracteres. O que voc deve fazer?
1. Dado uma lista inteiros aleatrios, imprima os elementos distintos (nicos) de maneira orde-
nada.
2. Dado uma lista ordenada de inteiros L com tamanho mximo de 1M de itens, determine quantas
vezes o valor v existe em L. Pesquise a funo lower_bound da STL do C++.
Para vericar se o elemento j est no conjunto i, basta vericar se (i&(1 << j)) > 0