Warrior Posted February 24, 2007 at 02:05 PM Author Report #84853 Posted February 24, 2007 at 02:05 PM Não penses que é fácil resolver correctamente um problema. Os pontos são atribuídos conforme o número de testes que o problema passou correctamente. Isto significa, dar a resposta correcta, dentro do tempo limite (1 segundo) e da memória limite (32MB). A divisão é (normalmente) feita através do tempo. Existem várias maneiras de resolver um problema, umas mais rápidas (eficientes) do que outras. Umas irão passar os testes todos, outras irão ter Time Limit Exceeded no últimos casos de teste.
samuca Posted March 1, 2007 at 02:43 PM Report #85683 Posted March 1, 2007 at 02:43 PM Eu inscrevi-me nas ONI, ainda ñ tive a treinar, mas ja dei uma olhada. O género de exercícios é igual aos que fiz no CIP (outro concurso de programação) na univ de coimbra e a minha equipa ganhou. O sistema Mooshak é exatamente o mesmo e os problemas estão em português (no outro estavam em ingles), por isso já tou ambientado. Vai ser fixe concorrer com o pessoal desta comunidade, vai ser uma boa experiencia. Já vi li aqui que algum pessoal tem problemas quanto aos inputs. Aconcelho a que usem Linux e que façam o input por um ficheiro txt, foi assim que fiz em coimbra. Boa sorte a todos. samuca.freehostia.com
Guest tsenart Posted March 1, 2007 at 03:24 PM Report #85696 Posted March 1, 2007 at 03:24 PM É pá.... Alguém me explica como é que eu resolvo este problema???
Warrior Posted March 1, 2007 at 07:36 PM Author Report #85762 Posted March 1, 2007 at 07:36 PM Se te der a solução perde a piada toda, mas vou dar uma dica.. Repara que o maior placar vai obrigatoriamente tocar o topo de pelo menos um dos prédios Já agora, Pedro, quando/se passares por cá.. Qual é a solução óptima para este problema? (a minha apesar de ter 100 pontos é O(n²), pelo que devia falhar num caso de testes "mau", não aleatório) Programação dinâmica tendo por base a altura dos prédios e o número deles? O(n*h)? Acho que passava em tempo mas que dá MLE.. PS: tsenart qual é o teu nome?
djthyrax Posted March 1, 2007 at 07:38 PM Report #85764 Posted March 1, 2007 at 07:38 PM É pá.... Alguém me explica como é que eu resolvo este problema??? Tens que ver qual é a sequência mais longa de prédios altos. O maior produto de (nr de prédios) * (altura do mais baixo), vai ser a sequência que prédios onde vai estar a ocupar mais espaço. Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!
Guest tsenart Posted March 1, 2007 at 09:14 PM Report #85790 Posted March 1, 2007 at 09:14 PM Se te der a solução perde a piada toda, mas vou dar uma dica.. Repara que o maior placar vai obrigatoriamente tocar o topo de pelo menos um dos prédios Já agora, Pedro, quando/se passares por cá.. Qual é a solução óptima para este problema? (a minha apesar de ter 100 pontos é O(n²), pelo que devia falhar num caso de testes "mau", não aleatório) Programação dinâmica tendo por base a altura dos prédios e o número deles? O(n*h)? Acho que passava em tempo mas que dá MLE.. PS: tsenart qual é o teu nome? http://www.portugal-a-programar.pt/index.php?showtopic=6553
Warrior Posted March 1, 2007 at 09:33 PM Author Report #85794 Posted March 1, 2007 at 09:33 PM Ainda não te vejo como inscrito nas ONI, vais fazê-lo?
Guest tsenart Posted March 2, 2007 at 06:22 PM Report #85944 Posted March 2, 2007 at 06:22 PM Ainda não te vejo como inscrito nas ONI, vais fazê-lo? Lol... Não. Estava só a resolver problemas de programação. Provavelmente para o ano lá estarei. Agora ainda não tenho nivel.
Rui Carlos Posted March 2, 2007 at 06:38 PM Report #85953 Posted March 2, 2007 at 06:38 PM Já agora, Pedro, quando/se passares por cá.. Qual é a solução óptima para este problema? (a minha apesar de ter 100 pontos é O(n²), pelo que devia falhar num caso de testes "mau", não aleatório) Programação dinâmica tendo por base a altura dos prédios e o número deles? O(n*h)? Acho que passava em tempo mas que dá MLE.. recorrendo a uma stack podes resolver o problema em tempo O(n) (acho eu, já implementei a solução, mas ainda não analisei a complexidade a fundo, mas penso que é linear). Rui Carlos Gonçalves
Warrior Posted March 2, 2007 at 09:30 PM Author Report #86001 Posted March 2, 2007 at 09:30 PM É possível resolver em O(n*h) com O(h) de espaço, encontrei uma solução para isso. Com a stack.. Não estou a ver como funciona em O(n). Provavelmente não estou a ver o funcionamento.
Rui Carlos Posted March 2, 2007 at 09:43 PM Report #86002 Posted March 2, 2007 at 09:43 PM É possível resolver em O(n*h) com O(h) de espaço, encontrei uma solução para isso. Com a stack.. Não estou a ver como funciona em O(n). Provavelmente não estou a ver o funcionamento. colocas a altura de um prédio e a sua posição numa stack, quando aparecer um prédio mais pequeno do que o prédio que está no topo da stack vais retirando o(s) elemento(s) da stack (maiores do que o prédio em causa); como também guardaste a sua posição podes calcular as áreas máximas possíveis para os prédio que estás a retirar da stack. é claro que há pormenores a ter em conta para garantir que funciona em todos os casos, nomeadamente na última iteração (e se calhar alguns que eu ainda não coniderei, mas em meia dúzia de testes que fiz estava a funcionar). EDIT: em termos de espaço este algoritmo será O(n). Rui Carlos Gonçalves
Warrior Posted March 2, 2007 at 10:23 PM Author Report #86017 Posted March 2, 2007 at 10:23 PM E isso dá a solução correcta para uma rua em que os prédios só crescem? (por exemplo) Nunca vais retirar nenhum prédio (são sempre maiores do que o anterior), mas não estou a ver como consegues calcular a área neste caso. Se funciona, continuo sem perceber.
Rui Carlos Posted March 2, 2007 at 10:25 PM Report #86019 Posted March 2, 2007 at 10:25 PM E isso dá a solução correcta para uma rua em que os prédios só crescem? (por exemplo) Nunca vais retirar nenhum prédio (são sempre maiores do que o anterior), mas não estou a ver como consegues calcular a área neste caso. Se funciona, continuo sem perceber. é claro que há pormenores a ter em conta para garantir que funciona em todos os casos, nomeadamente na última iteração. Rui Carlos Gonçalves
Warrior Posted March 2, 2007 at 10:30 PM Author Report #86021 Posted March 2, 2007 at 10:30 PM E o que fazes nessa última iteração? Pelo que percebo, chegas à última iteração com uma stack completamente cheia com os prédios (ou seja, o vector original). Ou fazes algo alem de inserir o prédio caso a sua altura seja maior?
Rui Carlos Posted March 2, 2007 at 10:47 PM Report #86030 Posted March 2, 2007 at 10:47 PM E o que fazes nessa última iteração? Pelo que percebo, chegas à última iteração com uma stack completamente cheia com os prédios (ou seja, o vector original). Ou fazes algo alem de inserir o prédio caso a sua altura seja maior? uma solução muito simples para esse problema é adicionar sempre um prédio no fim com altura 0. outra solução é no final ter um ciclo que esvazia a stack. eu optei pela primeira alternativa. Rui Carlos Gonçalves
Warrior Posted March 2, 2007 at 10:53 PM Author Report #86035 Posted March 2, 2007 at 10:53 PM De facto parece funcionar. Só tenho dúvidas quanto à complexidade, mas uma vez que só adicionas e removes cada prédio uma única vez parece ser mesmo O(n)
Guest tsenart Posted March 21, 2007 at 05:49 PM Report #89547 Posted March 21, 2007 at 05:49 PM Por favor.... Voces tao para ai a falar de Big O notations(coisa que eu nao sei)... Podem postar o código? E que isto está mesmo a dar cabo das minhas unhas. Já tentei de todas as maneiras que conheço. Thankz
Warrior Posted March 21, 2007 at 07:34 PM Author Report #89560 Posted March 21, 2007 at 07:34 PM Não vou postar o código, mas adiciona-me no MSN que eu ajudo-te no que for preciso. Deixei o mail lá para tras.
Warrior Posted March 28, 2007 at 12:43 PM Author Report #90377 Posted March 28, 2007 at 12:43 PM Pus online o CD fornecido no estágio para as Olimpíadas Internacionais de 2005, tem material bastante interessante para todos, quer participem este ano nas ONI quer não. http://www.upgaming-hq.com/cd_ioi_05/ PS: Ignorem as informações pré-estágio etc, porque obviamente que já não se aplicam.
vbmaster Posted April 11, 2007 at 06:21 PM Report #93216 Posted April 11, 2007 at 06:21 PM É oficial, eu e o quickfire vamos participar. Só estamos dependentes dos dados do professor responsável para proceder à incrição.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now