Objectivos para o Teste Prático 1 (7 de Novembro)

Aqui fica uma lista de objectivos para o 1º teste prático de DAA, que incidirá sobre os capítulos 1 a 4. Poderá implementar as soluções em C, C++ ou Java.

Formato:

Checklist para o teste:

  1. Fazer inscrição no teste via Mooshak: ir ao concurso "1º Teste Prático - Inscrição", clicar na checkbox e submeter (até às 13:00 de quinta, dia 5 de Novembro). Podem indicar preferência de turno, sendo que irei tentar obedecer ao pedido (desde que tenha espaço no turno respetivo).
  2. (Pré)Submeter um ficheiro com código (e qualquer texto que queiram), ao qual terão acesso durante o teste - ir ao concurso "1º Teste Prático - Pré-Submissão de Código" e submeter um único ficheiro; se submeterem mais do que uma vezm apenas a sua última submissão estará disponível no dia do teste prático; o ficheiro (.txt) pode conter o que quiserem até um máximo de 500KB (até 13:00 de quinta, dia 5 de Novembro).
  3. Na sexta-feira, dia 6 de Novembro, logo pela manhã, irei enviar (mail, site e slack) uma distribuição dos alunos por horários e salas com indicação de como fazerem no dia e a que horas devem chegar.

As pontuações são parciais, significando que cada problema terá vários testes, cada um valendo um determinado número de pontos. Para cada teste pontuável existirá um teste não pontuável de características similares disponível para visualização quando falharem. Os testes pontuáveis são secretos. A sua pontuação é determinada pelos testes em que o seu programa acertar. Para terem 100% num problema será necessário terem uma solução eficiente. Uma solução com "força bruta" poderá portanto dar menos do que a pontuação ótima.

Os enunciados estão "despidos" da uma história mais gira para irem directos ao que é pedido de modo a que possam usar as duas horas de forma adequada. Para alguns dos problemas poderão ser dadas dicas sobre como resolver.

Terão acesso a documentação das vossa linguagens e às classes FastScanner e FastInput, no Java.

O teste prático terá os seguintes 3+1 problemas para serem resolvidos em 2h (o último problema é para ter nota acima de 100%):

Problema A (34% da nota)

Greedy + Ordenação

Problemas exemplo:
- [DAA 014] O Problema do sapateiro (se saisse no teste seria explicado qual o critério a usar para ordenar as encomendas de sapatos)
- [DAA 009] ADN alienígena (um outro problema onde é preciso usar ordenação customizada)
- [DAA 013] Cobertura mínima (um outro problema greedy onde é necessário usar ordenação)

Problema B (33% da nota)

Pesquisa Binária

Problemas exemplo:
- [DAA 010] Somas mais próximas
- [DAA 011] Viagem de mochila às costas (mais complicado do que posso vir a colocar no teste como problema B)

Problema C (33% da nota)

Programação Dinâmica

Problemas exemplo:
- [DAA 017] Pirâmides
- [DAA 018] Troco de moedas

Problema D (20% da nota)

Tema Aberto