sexta-feira, 13 de abril de 2012

Competição de Outono 01 - Equipe

Olá pessoal,

Finalmente nós iniciamos a temporada de competições do Outono na UFRN (apesar de que o outono não é muito bem sentido no hemisfério sul)! Para dar início de forma bem empolgante, refizemos a final brasileira da Maratona 2011 e o resultado foi muito bom, por sinal. Apenas a equipe Absurdo Clássico participou (a minha) e ainda com a presença de somente 2 competidores (eu e Zailton). No geral, os problemas foram de nível fácil, contudo conseguimos ainda finalizar 2 problemas considerados médios para a competição, um usando Segment Tree (sem a necessidade de Lazy Propagation) e outro de grafos.

Início: 2012-03-23 8h. Término: 2012-03-23 13h.

Problemas:

terça-feira, 3 de abril de 2012

Material para Estudo - Semana 06

Olá pessoal,

O tema dessa semana é bem simples e ao mesmo tempo enganador: algoritmos gulosos. Com eles normalmente resolvemos problemas que parecem tão complicados somente encontrando algum padrão de ordenação nos elementos, todavia podemos nos surpreender em diversos casos nos quais pensamos ter solução gulosa e recebermos Wrong Answer! Portanto, é bom aprender os casos clássicos e ter uma boa noção de provar corretude de algoritmos nesse paradigma.

Assunto: Algoritmos Gulosos

Bibliografia principal:

Bibliografia complementar:
  • Algorithm Design (Kleinberg, Tardos), capítulo 4 - Greedy Algorithms
  • Top Coder - Greedy is Good
Problemas sugeridos:
  • UVa 410 (Station Balance): problema clássico de algoritmos gulosos com mesmo nome do problema.
  • UVa 11729 (Commando War): um tipo de problema de escalonamento de intervalos.
  • UVa 10382 (Wattering Grass): problema bem interessante de cobertura intervalar mínima com um toque de geometria 2D.
  • UVa 11157 (Dynamic Frog): um caso meio ad-hoc de algoritmo guloso, tornando a ideia bem difícil de se obter.

Material para Estudo - Semana 05

Olá pessoal,

Nosso treinamento continua com mais um tema de extrema importância: o paradigma de divisão e conquista! Nessa semana foi procurado abordar esse tema para aprofundar o estudo de recursões (iniciado com Busca Exaustiva) e começar a resolver problemas mais complexos. O assunto foi dividido basicamente no algoritmo de Karatsuba para multiplicação de números grandes, busca binária e busca ternária!

Assunto: Divisão e Conquista

Bibliografia principal:

Bibliografia complementar:
Problemas sugeridos:
  • UVa 11413 (Fill the Containers): busca binária na resposta e simulação.
  • UVa 10341 (Solve It): método da bisseção para encontrar raízes de funções.
  • SPOJ 7104 (Feanor The Elf): busca ternária na resposta. É bom tentar perceber, pelo menos intuitivamente, que a função de alcance parametrizada no ângulo de inclinação é unimodal.
  • SPOJ 31 (Fast Multiplication): aplicação direta do algoritmo de Karatsuba.
  • SRM 436 - Div 1 Hard (Circular Shifts): um bom problema para treinar a adaptação da multiplicação de Karatsuba. Também pode ser resolvido com FFT (transformada rápida de Fourier).