Resolvi mudar o meu blog, levá-lo um pouco mais a sério, e dispor de um pouco mais de recursos.
O novo endereço do meu blog é este:
http://crbonilha.com
Layout novo, host novo e até domínio novo!
Os posts que eu julgava mais interessantes foram e alguns ainda serão transferidos para lá.
Não farei mais nenhum post aqui, apenas lá.
Considerem este blog aposentado.
Não vou excluí-lo, porém, pois há bastante conteúdo bacana aqui ainda.
Vejo vocês lá.
Mostrando postagens com marcador Médio. Mostrar todas as postagens
Mostrando postagens com marcador Médio. Mostrar todas as postagens
segunda-feira, 17 de março de 2014
Blog Novo!
Postado por
Bonilha
às
15:56
Nenhum comentário:
Enviar por e-mailPostar no blog!Compartilhar no XCompartilhar no FacebookCompartilhar com o Pinterest
Marcadores:
Algoritmo,
Allegro,
Android,
Contest,
Difícil,
Editorial,
Etc,
Exercício,
Fácil,
Guia,
Java,
Jogo,
Matemática,
Médio,
Meu Repertório,
Projeto,
SPOJ,
Update,
URI,
Vídeo
segunda-feira, 26 de novembro de 2012
#87 Exercício - Fazenda
Nome: Fazenda
Link: http://br.spoj.pl/problems/FAZENDMG/
Dificuldade: 7/10
Linguagem: C++
Tempo atingido: 3.30
Memória usada: 12M
Colocação alcançada: 32
Tentativas: 4
Comentário:
Tinha até esquecido a sensação de receber um "aceito".
Dicas:
- Pensem em uma matriz grande. Agora preencham. Agora pensem em um modo de verificar quando há ou não uma cerca em determinado lado de determinada posição. Pronto.
- Prestem atenção para não verificar se a posição que você está verificando se há cerca não está fora da própria matriz. Se sim, há cerca.
Link: http://br.spoj.pl/problems/FAZENDMG/
Dificuldade: 7/10
Linguagem: C++
Tempo atingido: 3.30
Memória usada: 12M
Colocação alcançada: 32
Tentativas: 4
Comentário:
Tinha até esquecido a sensação de receber um "aceito".
Dicas:
- Pensem em uma matriz grande. Agora preencham. Agora pensem em um modo de verificar quando há ou não uma cerca em determinado lado de determinada posição. Pronto.
- Prestem atenção para não verificar se a posição que você está verificando se há cerca não está fora da própria matriz. Se sim, há cerca.
terça-feira, 30 de outubro de 2012
#86 Exercício - TV da Vovó
Nome: TV da Vovó
Link: http://br.spoj.pl/problems/TV/
Dificuldade: 5/10
Linguagem: C++
Tempo atingido: 1.14
Memória usada: 6.5M
Colocação alcançada: 100+
Tentativas: 2
Dicas:
- O que seria mais eficaz, mudar cada valor da matriz, ou mudar a ordem com que cada valor da matriz será impressa? Imaginem o seguinte: Será impressa a linha 1, e após a linha 2. E se você mudasse, em vez do valores, apenas a ordem: seria impressa a linha 2, e depois a linha 1.
- Notem que o valor que indica quantas posições uma linha/coluna será movida pode ser maior que a própria matriz. Se eu mover 10 colunas a direita, numa matriz com 3 colunas, quantas posições as colunas moveriam de fato?
Link: http://br.spoj.pl/problems/TV/
Dificuldade: 5/10
Linguagem: C++
Tempo atingido: 1.14
Memória usada: 6.5M
Colocação alcançada: 100+
Tentativas: 2
Dicas:
- O que seria mais eficaz, mudar cada valor da matriz, ou mudar a ordem com que cada valor da matriz será impressa? Imaginem o seguinte: Será impressa a linha 1, e após a linha 2. E se você mudasse, em vez do valores, apenas a ordem: seria impressa a linha 2, e depois a linha 1.
- Notem que o valor que indica quantas posições uma linha/coluna será movida pode ser maior que a própria matriz. Se eu mover 10 colunas a direita, numa matriz com 3 colunas, quantas posições as colunas moveriam de fato?
quinta-feira, 25 de outubro de 2012
#85 Exercício - Companheiros de Exército
Nome: Companheiros de Exército
Link: http://br.spoj.pl/problems/ARMY11/
Dificuldade: 5/10
Linguagem: C++
Tempo atingido: 1.12
Memória usada: 4.1M
Colocação alcançada: 20
Tentativas: 1
Dicas:
- Pensem em quem está a esquerda e a direita de cada soldado. Quem ficará a direita do soldado que estava a esquerda de quem foi morto? E quem ficará a esquerda do soldado que estava a direita de quem foi morto? Só isso.
Link: http://br.spoj.pl/problems/ARMY11/
Dificuldade: 5/10
Linguagem: C++
Tempo atingido: 1.12
Memória usada: 4.1M
Colocação alcançada: 20
Tentativas: 1
Dicas:
- Pensem em quem está a esquerda e a direita de cada soldado. Quem ficará a direita do soldado que estava a esquerda de quem foi morto? E quem ficará a esquerda do soldado que estava a direita de quem foi morto? Só isso.
quarta-feira, 24 de outubro de 2012
#83 Exercício - Fusões
Nome: Fusões
Link: http://br.spoj.pl/problems/JOAOMG/
Dificuldade: 7/10
Linguagem: C++
Tempo atingido: 1.47
Memória usada: 4.2M
Colocação alcançada: 83
Tentativas: 2
Comentário:
Union-Find, é isso que foi preciso estudar.
Não é tão difícil, existem alguns métodos bons na internet, basta pesquisar.
Dicas:
- Estudem Union-Find.
Link: http://br.spoj.pl/problems/JOAOMG/
Dificuldade: 7/10
Linguagem: C++
Tempo atingido: 1.47
Memória usada: 4.2M
Colocação alcançada: 83
Tentativas: 2
Comentário:
Union-Find, é isso que foi preciso estudar.
Não é tão difícil, existem alguns métodos bons na internet, basta pesquisar.
Dicas:
- Estudem Union-Find.
terça-feira, 23 de outubro de 2012
#82 Exercício - João e o pé de feijão
Nome: João e o pé de feijão
Link: http://br.spoj.pl/problems/JOAOMG/
Dificuldade: 6/10
Linguagem: C++
Tempo atingido: 0.15
Memória usada: 2.6M
Colocação alcançada: 65
Tentativas: 2
Comentário:
Bem bolado esse exercício.
Pra resolver basta ter uma noção de manipulação de strings.
Dicas:
- Estudem algo sobre manipulação de strings.
- Vale notar que o quadrado de n pode ser um valor alto.
Link: http://br.spoj.pl/problems/JOAOMG/
Dificuldade: 6/10
Linguagem: C++
Tempo atingido: 0.15
Memória usada: 2.6M
Colocação alcançada: 65
Tentativas: 2
Comentário:
Bem bolado esse exercício.
Pra resolver basta ter uma noção de manipulação de strings.
Dicas:
- Estudem algo sobre manipulação de strings.
- Vale notar que o quadrado de n pode ser um valor alto.
sábado, 13 de outubro de 2012
#76 Exercício - Engarrafamento
Nome: Engarrafamento
Link: http://br.spoj.pl/problems/ENGARRAF/
Dificuldade: 6/10
Linguagem: C++
Tempo atingido: 0.05
Memória usada: 4.7M
Colocação alcançada: 100+
Tentativas: 6
Comentário:
Faz um tempo que eu ouvia falar do algoritmo de Dijkstra (segundo o que eu li, se lê "dêcstra"), sobre como encontrar o caminho de menor custo, e finalmente consegui implementar.
Requer um conhecimento sobre grafos, e um pouco sobre ordenação, portanto recomendo para os mais experientes.
Aliás, um abraço pro meu nome amigo José, que me deu umas dicas sobre esse exercício.
Dicas:
- Estude algum algoritmo sobre encontrar o caminho de menor custo. Recomendo o Dijkstra para os mais experientes. Não tenho certeza se força bruta passa no tempo desse exercício, mas da pra tentar também.
Link: http://br.spoj.pl/problems/ENGARRAF/
Dificuldade: 6/10
Linguagem: C++
Tempo atingido: 0.05
Memória usada: 4.7M
Colocação alcançada: 100+
Tentativas: 6
Comentário:
Faz um tempo que eu ouvia falar do algoritmo de Dijkstra (segundo o que eu li, se lê "dêcstra"), sobre como encontrar o caminho de menor custo, e finalmente consegui implementar.
Requer um conhecimento sobre grafos, e um pouco sobre ordenação, portanto recomendo para os mais experientes.
Aliás, um abraço pro meu nome amigo José, que me deu umas dicas sobre esse exercício.
Dicas:
- Estude algum algoritmo sobre encontrar o caminho de menor custo. Recomendo o Dijkstra para os mais experientes. Não tenho certeza se força bruta passa no tempo desse exercício, mas da pra tentar também.
terça-feira, 9 de outubro de 2012
#75 Exercício - Batalha naval
Nome: Batalha naval
Link: http://br.spoj.pl/problems/BATALHA2/
Dificuldade: 5/10
Linguagem: C++
Tempo atingido: 0.06
Memória usada: 2.9M
Colocação alcançada: 57
Tentativas: 5
Comentário:
Exercício de um joguinho que todo mundo conhece, batalha naval.
Não chega a ser difícil, basta ir marcando as jogadas e depois verificar se todas as partes de cada navio foi atingida.
Dicas:
- Certifiquem-se de verificar se todas as partes do navio em questão foram atingidas.
Link: http://br.spoj.pl/problems/BATALHA2/
Dificuldade: 5/10
Linguagem: C++
Tempo atingido: 0.06
Memória usada: 2.9M
Colocação alcançada: 57
Tentativas: 5
Comentário:
Exercício de um joguinho que todo mundo conhece, batalha naval.
Não chega a ser difícil, basta ir marcando as jogadas e depois verificar se todas as partes de cada navio foi atingida.
Dicas:
- Certifiquem-se de verificar se todas as partes do navio em questão foram atingidas.
sábado, 6 de outubro de 2012
#73 Exercício - Você pode dizer 11
Nome: Você pode dizer 11
Link: http://br.spoj.pl/problems/ONZE/
Dificuldade: 4/10
Linguagem: C++
Tempo atingido: 0.07
Memória usada: 2.6M
Colocação alcançada: 100+
Tentativas: 3
Comentário:
Esse exercício pode parecer fácil no começo, porém ao se deparar com um número de até 1000 dígitos é preciso pensar duas vezes antes de resolvê-lo.
O interessante é que nem foi tão difícil. Eu dei uma olhada nos comentários, como sempre, e me deparei com esses "Critérios de divisibilidade", que o Cleber Adriani mostrou, que eu nunca imaginei que existiam.
Deem uma olhada: http://pt.wikipedia.org/wiki/Crit%C3%A9rios_de_divisibilidade
Com isso fica mais fácil resolver o exercício.
Dicas:
- Estudem critérios de divisibilidade.
- Notem que a entrada deverá ser uma cadeia de caracteres, e, independente do método escolhido, será necessário converter os valores para inteiros. Eu sempre uso a tabela ASCII (http://www.asciitable.com/) para converter.
Link: http://br.spoj.pl/problems/ONZE/
Dificuldade: 4/10
Linguagem: C++
Tempo atingido: 0.07
Memória usada: 2.6M
Colocação alcançada: 100+
Tentativas: 3
Comentário:
Esse exercício pode parecer fácil no começo, porém ao se deparar com um número de até 1000 dígitos é preciso pensar duas vezes antes de resolvê-lo.
O interessante é que nem foi tão difícil. Eu dei uma olhada nos comentários, como sempre, e me deparei com esses "Critérios de divisibilidade", que o Cleber Adriani mostrou, que eu nunca imaginei que existiam.
Deem uma olhada: http://pt.wikipedia.org/wiki/Crit%C3%A9rios_de_divisibilidade
Com isso fica mais fácil resolver o exercício.
Dicas:
- Estudem critérios de divisibilidade.
- Notem que a entrada deverá ser uma cadeia de caracteres, e, independente do método escolhido, será necessário converter os valores para inteiros. Eu sempre uso a tabela ASCII (http://www.asciitable.com/) para converter.
#72 Exercício - Mesa da Sra Montagny!
Nome: Mesa da Sra Montagny!
Link: http://br.spoj.pl/problems/MESA/
Dificuldade: 5/10
Linguagem: C++
Tempo atingido: 1.76
Memória usada: 2.7M
Colocação alcançada: 100+
Tentativas: 3
Comentário:
Mais um exercício de grafo disfarçado ai.
Se trata de verificar se o grafo é bipartido.
Pesquisem algo sobre.
Dicas:
- Pesquise algo sobre grafo e como verificar se ele é bipartido.
Clique abaixo para alguns casos de teste úteis.
Link: http://br.spoj.pl/problems/MESA/
Dificuldade: 5/10
Linguagem: C++
Tempo atingido: 1.76
Memória usada: 2.7M
Colocação alcançada: 100+
Tentativas: 3
Comentário:
Mais um exercício de grafo disfarçado ai.
Se trata de verificar se o grafo é bipartido.
Pesquisem algo sobre.
Dicas:
- Pesquise algo sobre grafo e como verificar se ele é bipartido.
Clique abaixo para alguns casos de teste úteis.
terça-feira, 2 de outubro de 2012
#70 Exercício - Tesouro
Nome: Tesouro
Link: http://br.spoj.pl/problems/TESOURO2/
Dificuldade: 6/10
Linguagem: C++
Tempo atingido: 2.65
Memória usada: 6.5M
Colocação alcançada: 23
Tentativas: 1
Comentário:
Pois é, 70 exercícios resolvidos no SPOJ! Pode não ser muito, mas pra mim já é bastante.
Sem falar na minha colocação na classificação, estou quase no top 200.
Agora vem a parte difícil, é preciso mutos pontos pra subir, mas vou continuar, devagar e sempre.
Voltando ao exercício, foi um pouquinho difícil, mas não muito.
Dicas:
- Façam uma DFS com listas de adjacências.
- Para cada sala visitada, é recomendável salvar um valor máximo que ela pode alcançar, assim não é preciso verificar sempre.
- Caso não entendam de grafos, pesquisem algo na internet, tem bastante conteúdo por aí.
Link: http://br.spoj.pl/problems/TESOURO2/
Dificuldade: 6/10
Linguagem: C++
Tempo atingido: 2.65
Memória usada: 6.5M
Colocação alcançada: 23
Tentativas: 1
Comentário:
Pois é, 70 exercícios resolvidos no SPOJ! Pode não ser muito, mas pra mim já é bastante.
Sem falar na minha colocação na classificação, estou quase no top 200.
Agora vem a parte difícil, é preciso mutos pontos pra subir, mas vou continuar, devagar e sempre.
Voltando ao exercício, foi um pouquinho difícil, mas não muito.
Dicas:
- Façam uma DFS com listas de adjacências.
- Para cada sala visitada, é recomendável salvar um valor máximo que ela pode alcançar, assim não é preciso verificar sempre.
- Caso não entendam de grafos, pesquisem algo na internet, tem bastante conteúdo por aí.
#69 Exercício - Galou está de volta
Nome: Galou está de volta
Link: http://br.spoj.pl/problems/GALOUVOL/
Dificuldade: 6/10
Linguagem: C++
Tempo atingido: 0.12
Memória usada: 2.6M
Colocação alcançada: 65
Tentativas: 1
Comentário:
Deu um pouquinho de trabalho, mas a lógica não é tão difícil assim.
Basta que vocês usem um DFS na grade, e imprimam a coisa certa.
Dicas:
- Notem que a entrada está em um retângulo reto, ao contrário do exemplo anterior onde o retângulo estava inclinado. A zona de contato de cada engrenagem continua a mesma do exemplo, isso é importante.
- Façam uma busca DFS na grade e vá marcando as direções. Caso alguma direção emperre, faça com que todos sejam bloqueados.
Link: http://br.spoj.pl/problems/GALOUVOL/
Dificuldade: 6/10
Linguagem: C++
Tempo atingido: 0.12
Memória usada: 2.6M
Colocação alcançada: 65
Tentativas: 1
Comentário:
Deu um pouquinho de trabalho, mas a lógica não é tão difícil assim.
Basta que vocês usem um DFS na grade, e imprimam a coisa certa.
Dicas:
- Notem que a entrada está em um retângulo reto, ao contrário do exemplo anterior onde o retângulo estava inclinado. A zona de contato de cada engrenagem continua a mesma do exemplo, isso é importante.
- Façam uma busca DFS na grade e vá marcando as direções. Caso alguma direção emperre, faça com que todos sejam bloqueados.
quarta-feira, 19 de setembro de 2012
#61 Exercício - Dengue
Nome: Dengue
Link: http://br.spoj.pl/problems/DENGUE/
Dificuldade: 4/10
Linguagem: C++
Tempo atingido: 0.13
Memória usada: 2.7M
Colocação alcançada: 100+
Tentativas: 1
Comentário:
Este exercício envolve uma lógica simples de grafos, recomendo para quem esteja estudando tal.
Eu o fiz usando uma forma um tanto quanto trivial, um BFS, mas imagino que haja outras maneiras de resolvê-lo.
Dicas:
- Pesquise algo sobre BFS em grafos, e então verifique cada cidade.
Link: http://br.spoj.pl/problems/DENGUE/
Dificuldade: 4/10
Linguagem: C++
Tempo atingido: 0.13
Memória usada: 2.7M
Colocação alcançada: 100+
Tentativas: 1
Comentário:
Este exercício envolve uma lógica simples de grafos, recomendo para quem esteja estudando tal.
Eu o fiz usando uma forma um tanto quanto trivial, um BFS, mas imagino que haja outras maneiras de resolvê-lo.
Dicas:
- Pesquise algo sobre BFS em grafos, e então verifique cada cidade.
segunda-feira, 10 de setembro de 2012
#52 Exercício - Rouba-Monte
Nome: Rouba-Monte
Link: http://br.spoj.pl/problems/ROUBA/
Dificuldade: 4/10
Linguagem: C++
Tempo atingido: 0.02
Memória usada: 2.6M
Colocação alcançada: 90
Tentativas: 1
Comentário:
Exercício simples, porém pode confundir um pouco.
Bom para treinar a perícia com vetores.
Dicas:
- Preste atenção na hora de passar a vez de jogar.
- Não importa a ordem de checagem, entre pilha de descarte e topo da pilha do adversário, visto que a carta não pode estar nos dois lugares.
Link: http://br.spoj.pl/problems/ROUBA/
Dificuldade: 4/10
Linguagem: C++
Tempo atingido: 0.02
Memória usada: 2.6M
Colocação alcançada: 90
Tentativas: 1
Comentário:
Exercício simples, porém pode confundir um pouco.
Bom para treinar a perícia com vetores.
Dicas:
- Preste atenção na hora de passar a vez de jogar.
- Não importa a ordem de checagem, entre pilha de descarte e topo da pilha do adversário, visto que a carta não pode estar nos dois lugares.
quinta-feira, 6 de setembro de 2012
#48 Exercício - Vivo ou morto
Nome: Vivo ou morto
Link: http://br.spoj.pl/problems/VIVO/
Dificuldade: 5/10
Linguagem: C++
Tempo atingido: 0.93
Memória usada: 2.6M
Colocação alcançada: 100+
Tentativas: 1
Comentário:
Pode parecer complicado, mas é até simples.
Basta tomar cuidado com os detalhes e implementar da maneira correta.
Dicas:
- Note que a fila é refeita sempre que alguém é eliminado.
- Alguém é eliminado sempre que seu movimento é diferente da ordem dada pelo professor.
Link: http://br.spoj.pl/problems/VIVO/
Dificuldade: 5/10
Linguagem: C++
Tempo atingido: 0.93
Memória usada: 2.6M
Colocação alcançada: 100+
Tentativas: 1
Comentário:
Pode parecer complicado, mas é até simples.
Basta tomar cuidado com os detalhes e implementar da maneira correta.
Dicas:
- Note que a fila é refeita sempre que alguém é eliminado.
- Alguém é eliminado sempre que seu movimento é diferente da ordem dada pelo professor.
#47 Exercício - Poker do rei
Nome: Poker do rei
Link: http://br.spoj.pl/problems/KING11/
Dificuldade: 4/10
Linguagem: C++
Tempo atingido: 0.01
Memória usada: 2.6M
Colocação alcançada: 38
Tentativas: 1
Comentário:
Parece simples, mas me deu uma bela de uma dor de cabeça.
Dicas:
- Repare que a saída deve ser ordenada.
- Preste atenção nos casos de teste, eles são suficientes para se resolver o problema.
- Ordenar a entrada pode lhe garantir menos trabalho mais tarde.
Link: http://br.spoj.pl/problems/KING11/
Dificuldade: 4/10
Linguagem: C++
Tempo atingido: 0.01
Memória usada: 2.6M
Colocação alcançada: 38
Tentativas: 1
Comentário:
Parece simples, mas me deu uma bela de uma dor de cabeça.
Dicas:
- Repare que a saída deve ser ordenada.
- Preste atenção nos casos de teste, eles são suficientes para se resolver o problema.
- Ordenar a entrada pode lhe garantir menos trabalho mais tarde.
quarta-feira, 5 de setembro de 2012
#46 Exercício - Caça ao tesouro
Nome: Caça ao tesouro
Link: http://br.spoj.pl/problems/TESOUR11/
Dificuldade: 6/10
Linguagem: C++
Tempo atingido: 0.04
Memória usada: 2.6M
Colocação alcançada: 19
Tentativas: 1
Comentário:
Foi até divertido resolver este exercício, eu recomendo.
Dicas:
- Note que um tesouro é encontrado se todas as dicas apontarem para ele. Portanto, verifique as posições onde no mínimo uma dica aponta, e verifique se todas as outras também indicam essa posição.
- Não é preciso nem montar uma matriz ou algo do tipo. Basta localizar as posições e fazer suposições.
Link: http://br.spoj.pl/problems/TESOUR11/
Dificuldade: 6/10
Linguagem: C++
Tempo atingido: 0.04
Memória usada: 2.6M
Colocação alcançada: 19
Tentativas: 1
Comentário:
Foi até divertido resolver este exercício, eu recomendo.
Dicas:
- Note que um tesouro é encontrado se todas as dicas apontarem para ele. Portanto, verifique as posições onde no mínimo uma dica aponta, e verifique se todas as outras também indicam essa posição.
- Não é preciso nem montar uma matriz ou algo do tipo. Basta localizar as posições e fazer suposições.
#44 Exercício - Colorindo
Nome: Colorindo
Link: http://br.spoj.pl/problems/COLOR11/
Dificuldade: 4/10
Linguagem: C++
Tempo atingido: 0.38
Memória usada: 4.3M
Colocação alcançada: 48
Tentativas: 1
Comentário:
Agora que eu descobri o poder das funções recursivas tudo ficou mais fácil haha.
Este exercício também é bem simples, basta verificar as casas adjacentes da matriz e ir pulando de uma em uma.
Dicas:
- Tome cuidado pra não verificar uma casa que esteja fora dos limites da matriz.
Link: http://br.spoj.pl/problems/COLOR11/
Dificuldade: 4/10
Linguagem: C++
Tempo atingido: 0.38
Memória usada: 4.3M
Colocação alcançada: 48
Tentativas: 1
Comentário:
Agora que eu descobri o poder das funções recursivas tudo ficou mais fácil haha.
Este exercício também é bem simples, basta verificar as casas adjacentes da matriz e ir pulando de uma em uma.
Dicas:
- Tome cuidado pra não verificar uma casa que esteja fora dos limites da matriz.
#43 Exercício - Mário
Nome: Mário
Link: http://br.spoj.pl/problems/MARIO/
Dificuldade: 6/10
Linguagem: C++
Tempo atingido: 0.90
Memória usada: 4.1M
Colocação alcançada: 100+
Tentativas: 5
Comentário:
Parece besteira, mas eu levei um tempão pra resolver graças a um detalhe que foi pura preguiça minha de ler o enunciado e consertar.
Esse exercício pode parecer complexo, porém eu acabei encontrando uma solução bem simples, inclusive parecida com um exercício que eu resolvi esses dias, o Bolo de apostas.
Acontece que eu usei algo parecido com o max interval sum, e acabei resolvendo o problema. Recomendo que estudem para ter uma ideia do que estou falando.
Aliás, usem a criatividade. As vezes dá pra fazer muito com pouco...
Dicas:
- Estudem o algoritmo max interval sum e adaptem-o a este problema.
- Tomem cuidado com o tamanho das entradas, que podem ser de até 1 bilhão, por mais que sejam somente 100 mil armários.
Casos de teste úteis
Link: http://br.spoj.pl/problems/MARIO/
Dificuldade: 6/10
Linguagem: C++
Tempo atingido: 0.90
Memória usada: 4.1M
Colocação alcançada: 100+
Tentativas: 5
Comentário:
Parece besteira, mas eu levei um tempão pra resolver graças a um detalhe que foi pura preguiça minha de ler o enunciado e consertar.
Esse exercício pode parecer complexo, porém eu acabei encontrando uma solução bem simples, inclusive parecida com um exercício que eu resolvi esses dias, o Bolo de apostas.
Acontece que eu usei algo parecido com o max interval sum, e acabei resolvendo o problema. Recomendo que estudem para ter uma ideia do que estou falando.
Aliás, usem a criatividade. As vezes dá pra fazer muito com pouco...
Dicas:
- Estudem o algoritmo max interval sum e adaptem-o a este problema.
- Tomem cuidado com o tamanho das entradas, que podem ser de até 1 bilhão, por mais que sejam somente 100 mil armários.
Casos de teste úteis
sexta-feira, 31 de agosto de 2012
#33 Exercício - Brincadeira das tentativas
Nome: Brincadeira das tentativas
Link: http://br.spoj.pl/problems/TENTA/
Dificuldade: 5/10
Linguagem: C++
Tempo atingido: 1.54
Memória usada: 2.6M
Colocação alcançada: 100+
Tentativas: 1
Comentário:
Essa me deu uma dor de cabeça, mas no final foi até divertida.
Vale a pena quebrar a cabeça pra tenta resolver, é interessante.
Eu usei um método de funções recursivas, ou seja, funções que chamam a si mesmo quantas vezes forem necessárias.
Dicas:
- É bom ter em mente que a ordem deve estar em ordem sempre que possível. Digamos que você faça uma troca entre o primeiro e o terceiro valor, agora faça questão de que entre o segundo e o último eles estejam em ordem antes que você comece a fazer as trocas do segundo número em diante.
- Digamos que a ordem que você terá que fazer tudo é mais ou menos essa: primeiro você troca os últimos números, depois um número antes desses, e então os últimos de novo, então você troca um número antes desses, e por aí vai.
- Treine escrever em um caderno a ordem correta até que você compreenda a lógica.
Link: http://br.spoj.pl/problems/TENTA/
Dificuldade: 5/10
Linguagem: C++
Tempo atingido: 1.54
Memória usada: 2.6M
Colocação alcançada: 100+
Tentativas: 1
Comentário:
Essa me deu uma dor de cabeça, mas no final foi até divertida.
Vale a pena quebrar a cabeça pra tenta resolver, é interessante.
Eu usei um método de funções recursivas, ou seja, funções que chamam a si mesmo quantas vezes forem necessárias.
Dicas:
- É bom ter em mente que a ordem deve estar em ordem sempre que possível. Digamos que você faça uma troca entre o primeiro e o terceiro valor, agora faça questão de que entre o segundo e o último eles estejam em ordem antes que você comece a fazer as trocas do segundo número em diante.
- Digamos que a ordem que você terá que fazer tudo é mais ou menos essa: primeiro você troca os últimos números, depois um número antes desses, e então os últimos de novo, então você troca um número antes desses, e por aí vai.
- Treine escrever em um caderno a ordem correta até que você compreenda a lógica.
Assinar:
Postagens (Atom)