AdaByron 2017 - Esbozo de las soluciones

162

Transcript of AdaByron 2017 - Esbozo de las soluciones

Page 1: AdaByron 2017 - Esbozo de las soluciones

AdaByron 2017

Estadísticas y Soluciones

Los jueces (UCM) AdaByron 2017 1 / 74

Page 2: AdaByron 2017 - Esbozo de las soluciones

Clasi�cación

Clasi�cación de los problemas

Problema Categoría

A - Aritmética verbal recursión, vuelta atrás

B - Pixel Art bucles, condicionales, cadenas

C - El profesor de música grafos, caminos mínimos,

fuerza bruta

D - Amigo invisible arrays, grafos, permutaciones,

pensar

E - El entretenimiento de las máquinas cadenas, diccionarios, tries

F - Hijos a tope árboles binarios, recursión

G - Chocolate con almendras programación dinámica

H - Las partituras de la orquesta búsqueda binaria, colas de prioridad

I - ¾Es múltiplo de 3? condicionales, números triangulares,

pensar

J - Más listos que el hambre programación dinámica, grafos,

caminos mínimos

K - Las perlas de la condesa arrays, ordenación

L - Durmiendo en albergues arrays, recorridos, bucles, cadenas

Los jueces (UCM) AdaByron 2017 2 / 74

Page 3: AdaByron 2017 - Esbozo de las soluciones

Estadísticas

Estadísticas

Problema# casos

de prueba

Espacio

en disco

A - Aritmética verbal 6.096 659 KB

B - Pixel Art 2.015 2 MB

C - El profesor de música 200 716 KB

D - Amigo invisible 20.586 597 KB

E - El entretenimiento de las máquinas 1.634 2,5 MB

F - Hijos a tope 24.182 848 KB

G - Chocolate con almendras 8.207 295 KB

H - Las partituras de la orquesta 8.199 2,6 MB

I - ¾Es múltiplo de 3? 15.103 159 KB

J - Más listos que el hambre 6.778 296 KB

K - Las perlas de la condesa 3.047 1,2 MB

L - Durmiendo en albergues 2.335 9,6 MB

- Total 98.382 21,5 MB

Los jueces (UCM) AdaByron 2017 3 / 74

Page 4: AdaByron 2017 - Esbozo de las soluciones

Estadísticas

Estadísticas*

ProblemaPrimer equipo

en resolverloTiempo

A - Aritmética verbal - -

B - Pixel Art Monos in�nitos 12

C - El profesor de música - -

D - Amigo invisible Monos in�nitos 120

E - El entretenimiento de las máquinas - -

F - Hijos a tope Team Burton 83

G - Chocolate con almendras Monos in�nitos 175

H - Las partituras de la orquesta Team Burton 55

I - ¾Es múltiplo de 3? Monos in�nitos 4

J - Más listos que el hambre - -

K - Las perlas de la condesa Monos in�nitos 19

L - Durmiendo en albergues Monos in�nitos 29

*Antes de congelar el marcador.

Los jueces (UCM) AdaByron 2017 4 / 74

Page 5: AdaByron 2017 - Esbozo de las soluciones

Estadísticas

Estadísticas*

Problema Envíos Válidos % éxito

A - Aritmética verbal 2 0 0%

B - Pixel Art 54 35 64%

C - El profesor de música - - -

D - Amigo invisible 32 6 18%

E - El entretenimiento de las máquinas - - -

F - Hijos a tope 11 7 63%

G - Chocolate con almendras 2 1 50%

H - Las partituras de la orquesta 56 5 8%

I - ¾Es múltiplo de 3? 101 26 25%

J - Más listos que el hambre 7 0 0%

K - Las perlas de la condesa 60 24 40%

L - Durmiendo en albergues 68 23 33%

*Antes de congelar el marcador.

Los jueces (UCM) AdaByron 2017 5 / 74

Page 6: AdaByron 2017 - Esbozo de las soluciones

Estadísticas

Estadísticas*

Jueces Participantes

Problema LOC LOCNC LOC LOCNC

A - Aritmética verbal 306,33 155,66 0 0

B - Pixel Art 83,66 51,00 71.37 56.91

C - El profesor de música 329,33 197,00 - -

D - Amigo invisible 163,25 56,50 67.00 57.16

E - El entreten. de las máquinas 198,80 115,20 - -

F - Hijos a tope 82,33 37,66 57.71 43.42

G - Chocolate con almendras 119,60 69,80 54.00 45.00

H - Las partituras de la orquesta 96,60 46,60 47.80 37.00

I - ¾Es múltiplo de 3? 75,50 26,00 38.80 25.00

J - Más listos que el hambre 190,40 77,20 0 0

K - Las perlas de la condesa 89,33 50,33 84.45 63.04

L - Durmiendo en albergues 85,40 42,40 56.86 44.00

- Total 1820,53 925,34

*Antes de congelar el marcador.

Los jueces (UCM) AdaByron 2017 6 / 74

Page 7: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

I. ¾Es múltiplo de 3?

Envíos Válidos % éxito

101 26 25%

Los jueces (UCM) AdaByron 2017 7 / 74

Page 8: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

I. ¾Es múltiplo de 3?Recordatorio del enunciado

Dado un n, construir el número formado por la concatenación de los dígitos

de los números 1. . . n, y decir si el resultado es múltiplo de 3: lo será si lo es

la suma de sus dígitos.

n Número formado ¾Divisible?

2 12 SI

6 123.456 SI

13 12.345.678.910.111.213 NO

Los jueces (UCM) AdaByron 2017 8 / 74

Page 9: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

I. ¾Es múltiplo de 3?Recordatorio del enunciado

Dado un n, construir el número formado por la concatenación de los dígitos

de los números 1. . . n, y decir si el resultado es múltiplo de 3: lo será si lo es

la suma de sus dígitos.

n Número formado ¾Divisible?

2 12 SI

6 123.456 SI

13 12.345.678.910.111.213 NO

Los jueces (UCM) AdaByron 2017 8 / 74

Page 10: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

I. ¾Es múltiplo de 3?Recordatorio del enunciado

Dado un n, construir el número formado por la concatenación de los dígitos

de los números 1. . . n, y decir si el resultado es múltiplo de 3: lo será si lo es

la suma de sus dígitos.

n Número formado ¾Divisible?

2 12 SI

6 123.456 SI

13 12.345.678.910.111.213 NO

Los jueces (UCM) AdaByron 2017 8 / 74

Page 11: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

I. ¾Es múltiplo de 3?Recordatorio del enunciado

Dado un n, construir el número formado por la concatenación de los dígitos

de los números 1. . . n, y decir si el resultado es múltiplo de 3: lo será si lo es

la suma de sus dígitos.

n Número formado ¾Divisible?

2 12 SI

6 123.456 SI

13 12.345.678.910.111.213 NO

Los jueces (UCM) AdaByron 2017 8 / 74

Page 12: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

I. ¾Es múltiplo de 3?

sD(i) : suma de los dígitos de i (en base 10)

( sD(1) + sD(2) + sD(3) + ... + sD(13) )% 3 = 55% 3 = 1

Con n=13, la respuesta es NO

Los jueces (UCM) AdaByron 2017 9 / 74

Page 13: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

I. ¾Es múltiplo de 3?

sD(i) : suma de los dígitos de i (en base 10)

( sD(1)

+ sD(2) + sD(3) + ... + sD(13) )% 3 = 55% 3 = 1

Con n=13, la respuesta es NO

Los jueces (UCM) AdaByron 2017 9 / 74

Page 14: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

I. ¾Es múltiplo de 3?

sD(i) : suma de los dígitos de i (en base 10)

( sD(1) + sD(2)

+ sD(3) + ... + sD(13) )% 3 = 55% 3 = 1

Con n=13, la respuesta es NO

Los jueces (UCM) AdaByron 2017 9 / 74

Page 15: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

I. ¾Es múltiplo de 3?

sD(i) : suma de los dígitos de i (en base 10)

( sD(1) + sD(2) + sD(3)

+ ... + sD(13) )% 3 = 55% 3 = 1

Con n=13, la respuesta es NO

Los jueces (UCM) AdaByron 2017 9 / 74

Page 16: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

I. ¾Es múltiplo de 3?

sD(i) : suma de los dígitos de i (en base 10)

( sD(1) + sD(2) + sD(3) + ... + sD(13) )% 3

= 55% 3 = 1

Con n=13, la respuesta es NO

Los jueces (UCM) AdaByron 2017 9 / 74

Page 17: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

I. ¾Es múltiplo de 3?

sD(i) : suma de los dígitos de i (en base 10)

( sD(1) + sD(2) + sD(3) + ... + sD(13) )% 3 = 55% 3

= 1

Con n=13, la respuesta es NO

Los jueces (UCM) AdaByron 2017 9 / 74

Page 18: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

I. ¾Es múltiplo de 3?

sD(i) : suma de los dígitos de i (en base 10)

( sD(1) + sD(2) + sD(3) + ... + sD(13) )% 3 = 55% 3 = 1

Con n=13, la respuesta es NO

Los jueces (UCM) AdaByron 2017 9 / 74

Page 19: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

I. ¾Es múltiplo de 3?

sD(i) : suma de los dígitos de i (en base 10)

( sD(1) + sD(2) + sD(3) + ... + sD(13) )% 3 = 55% 3 = 1

Con n=13, la respuesta es NO

Los jueces (UCM) AdaByron 2017 9 / 74

Page 20: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

I. ¾Es múltiplo de 3?Recordatorio del enunciado

Dado un n, construir el número formado por la concatenación de los dígitos

de los números 1. . . n, y decir si el resultado es múltiplo de 3 (si lo son la

suma de sus dígitos)

n Número formado ¾Divisible?

2 12 SI

6 123.456 SI

13 12.345.678.910.111.213 NO

109 12..4.593.921.593 dígitos después..0 �

Los jueces (UCM) AdaByron 2017 10 / 74

Page 21: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

I. ¾Es múltiplo de 3?Recordatorio del enunciado

Dado un n, construir el número formado por la concatenación de los dígitos

de los números 1. . . n, y decir si el resultado es múltiplo de 3 (si lo son la

suma de sus dígitos)

n Número formado ¾Divisible?

2 12 SI

6 123.456 SI

13 12.345.678.910.111.213 NO

109 12..4.593.921.593 dígitos después..0

Los jueces (UCM) AdaByron 2017 10 / 74

Page 22: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

I. ¾Es múltiplo de 3?Recordatorio del enunciado

Dado un n, construir el número formado por la concatenación de los dígitos

de los números 1. . . n, y decir si el resultado es múltiplo de 3 (si lo son la

suma de sus dígitos)

n Número formado ¾Divisible?

2 12 SI

6 123.456 SI

13 12.345.678.910.111.213 NO

109 12..4.593.921.593 dígitos después..0 �

Los jueces (UCM) AdaByron 2017 10 / 74

Page 23: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

I. ¾Es múltiplo de 3?¾Cómo evoluciona la suma de dígitos?

n sD(n)1 1

2 2

3 3

. . . . . .

9 9

10 1

11 2

. . . . . .

19 10

20 2

. . . . . .

Los jueces (UCM) AdaByron 2017 11 / 74

Page 24: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

I. ¾Es múltiplo de 3?¾Cómo evoluciona la suma de dígitos?

n sD(n)1 1

2 2

3 3

. . . . . .

9 9

10 1

11 2

. . . . . .

19 10

20 2

. . . . . .

Los jueces (UCM) AdaByron 2017 11 / 74

Page 25: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

I. ¾Es múltiplo de 3?¾Cómo evoluciona la suma de dígitos?

n sD(n)1 1

2 2

3 3

. . . . . .

9 9

10 1

11 2

. . . . . .

19 10

20 2

. . . . . .

Los jueces (UCM) AdaByron 2017 11 / 74

Page 26: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

I. ¾Es múltiplo de 3?¾Cómo evoluciona la suma de dígitos?

n sD(n)1 1

2 2

3 3

. . . . . .

9 9

10 1

11 2

. . . . . .

19 10

20 2

. . . . . .

Los jueces (UCM) AdaByron 2017 11 / 74

Page 27: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

I. ¾Es múltiplo de 3?¾Cómo evoluciona la suma de dígitos?

n sD(n)1 1

2 2

3 3

. . . . . .

9 9

10 1

11 2

. . . . . .

19 10

20 2

. . . . . .

Los jueces (UCM) AdaByron 2017 11 / 74

Page 28: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

I. ¾Es múltiplo de 3?¾Cómo evoluciona la suma de dígitos?

n sD(n)1 1

2 2

3 3

. . . . . .

9 9

10 1

11 2

. . . . . .

19 10

20 2

. . . . . .

Los jueces (UCM) AdaByron 2017 11 / 74

Page 29: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

I. ¾Es múltiplo de 3?¾Cómo evoluciona la suma de dígitos?

n sD(n)1 1

2 2

3 3

. . . . . .

9 9

10 1

11 2

. . . . . .

19 10

20 2

. . . . . .

Los jueces (UCM) AdaByron 2017 11 / 74

Page 30: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

I. ¾Es múltiplo de 3?¾Cómo evoluciona la suma de dígitos?

n sD(n)1 1

2 2

3 3

. . . . . .

9 9

10 1

11 2

. . . . . .

19 10

20 2

. . . . . .

Los jueces (UCM) AdaByron 2017 11 / 74

Page 31: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

I. ¾Es múltiplo de 3?¾Cómo evoluciona la suma de dígitos?

n sD(n)1 1

2 2

3 3

. . . . . .

9 9

10 1

11 2

. . . . . .

19 10

20 2

. . . . . .

Los jueces (UCM) AdaByron 2017 11 / 74

Page 32: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

I. ¾Es múltiplo de 3?¾Cómo evoluciona la suma de dígitos?

n sD(n)1 1

2 2

3 3

. . . . . .

9 9

10 1

11 2

. . . . . .

19 10

20 2

. . . . . .

Los jueces (UCM) AdaByron 2017 11 / 74

Page 33: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

I. ¾Es múltiplo de 3?¾Cómo evoluciona la suma de dígitos?

n sD(n)1 1

2 2

3 3

. . . . . .

9 9

10 1

11 2

. . . . . .

19 10

20 2

. . . . . .

Los jueces (UCM) AdaByron 2017 11 / 74

Page 34: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

I. ¾Es múltiplo de 3?Aritmética modular al rescate

( sD(1) + sD(2) + sD(3) + ... + sD(13) )% 3

( sD(1)% 3 + sD(2)% 3 + sD(3)% 3 + ... + sD(13)% 3 )% 3

Los jueces (UCM) AdaByron 2017 12 / 74

Page 35: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

I. ¾Es múltiplo de 3?Aritmética modular al rescate

( sD(1) + sD(2) + sD(3) + ... + sD(13) )% 3

( sD(1)% 3 + sD(2)% 3 + sD(3)% 3 + ... + sD(13)% 3 )% 3

Los jueces (UCM) AdaByron 2017 12 / 74

Page 36: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

I. ¾Es múltiplo de 3?¾Cómo evoluciona la suma de dígitos?

n sD(n) sD(n)%31 1 1

2 2 2

3 3 0

. . . . . .

8 8 2

9 9 0

10 1 1

11 2 2

. . . . . .

19 10 1

20 2 2

. . . . . .

Los jueces (UCM) AdaByron 2017 13 / 74

Page 37: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

I. ¾Es múltiplo de 3?¾Cómo evoluciona la suma de dígitos?

n sD(n) sD(n)%31 1 1

2 2 2

3 3 0

. . . . . .

8 8 2

9 9 0

10 1 1

11 2 2

. . . . . .

19 10 1

20 2 2

. . . . . .

Los jueces (UCM) AdaByron 2017 13 / 74

Page 38: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

I. ¾Es múltiplo de 3?¾Cómo evoluciona la suma de dígitos?

n sD(n) sD(n)%31 1 1

2 2 2

3 3 0

. . . . . .

8 8 2

9 9 0

10 1 1

11 2 2

. . . . . .

19 10 1

20 2 2

. . . . . .

Los jueces (UCM) AdaByron 2017 13 / 74

Page 39: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

I. ¾Es múltiplo de 3?¾Cómo evoluciona la suma de dígitos?

n sD(n) sD(n)%31 1 1

2 2 2

3 3 0

. . . . . .

8 8 2

9 9 0

10 1 1

11 2 2

. . . . . .

19 10 1

20 2 2

. . . . . .

Los jueces (UCM) AdaByron 2017 13 / 74

Page 40: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

I. ¾Es múltiplo de 3?¾Cómo evoluciona la suma de dígitos?

n sD(n) sD(n)%31 1 1

2 2 2

3 3 0

. . . . . .

8 8 2

9 9 0

10 1 1

11 2 2

. . . . . .

19 10 1

20 2 2

. . . . . .

Los jueces (UCM) AdaByron 2017 13 / 74

Page 41: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

I. ¾Es múltiplo de 3?¾Cómo evoluciona la suma de dígitos?

n sD(n) sD(n)%31 1 1

2 2 2

3 3 0

. . . . . .

8 8 2

9 9 0

10 1 1

11 2 2

. . . . . .

19 10 1

20 2 2

. . . . . .

Los jueces (UCM) AdaByron 2017 13 / 74

Page 42: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

I. ¾Es múltiplo de 3?¾Cómo evoluciona la suma de dígitos?

n sD(n) sD(n)%31 1 1

2 2 2

3 3 0

. . . . . .

8 8 2

9 9 0

10 1 1

11 2 2

. . . . . .

19 10 1

20 2 2

. . . . . .

Los jueces (UCM) AdaByron 2017 13 / 74

Page 43: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

I. ¾Es múltiplo de 3?Aritmética modular al rescate

( sD(1) + sD(2) + sD(3) + ... + sD(13) )% 3

( sD(1)% 3 + sD(2)% 3 + sD(3)% 3 + ... + sD(13)% 3 )% 3

½Eureka!

( 1 + 2 + 0 + 1 + 2 + 0 + ... + sD(n)% 3 )% 3

Podemos hacer más módulos. . .

½Requete-eureka!

½ (1 + 2)% 3 = 0 !

Los jueces (UCM) AdaByron 2017 14 / 74

Page 44: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

I. ¾Es múltiplo de 3?Aritmética modular al rescate

( sD(1) + sD(2) + sD(3) + ... + sD(13) )% 3

( sD(1)% 3 + sD(2)% 3 + sD(3)% 3 + ... + sD(13)% 3 )% 3

½Eureka!

( 1 + 2 + 0 + 1 + 2 + 0 + ... + sD(n)% 3 )% 3

Podemos hacer más módulos. . .

½Requete-eureka!

½ (1 + 2)% 3 = 0 !

Los jueces (UCM) AdaByron 2017 14 / 74

Page 45: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

I. ¾Es múltiplo de 3?Aritmética modular al rescate

( sD(1) + sD(2) + sD(3) + ... + sD(13) )% 3

( sD(1)% 3 + sD(2)% 3 + sD(3)% 3 + ... + sD(13)% 3 )% 3

½Eureka!

( 1 + 2 + 0 + 1 + 2 + 0 + ... + sD(n)% 3 )% 3

Podemos hacer más módulos. . .

½Requete-eureka!

½ (1 + 2)% 3 = 0 !

Los jueces (UCM) AdaByron 2017 14 / 74

Page 46: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

I. ¾Es múltiplo de 3?Aritmética modular al rescate

( sD(1) + sD(2) + sD(3) + ... + sD(13) )% 3

( sD(1)% 3 + sD(2)% 3 + sD(3)% 3 + ... + sD(13)% 3 )% 3

½Eureka!

( 1 + 2 + 0 + 1 + 2 + 0 + ... + sD(n)% 3 )% 3

Podemos hacer más módulos. . .

½Requete-eureka!

½ (1 + 2)% 3 = 0 !

Los jueces (UCM) AdaByron 2017 14 / 74

Page 47: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

I. ¾Es múltiplo de 3?Aritmética modular al rescate

½Lo importante es cómo termina la serie de sumas!

• (1 + 2 + ... + 1 + 2 + 0)% 3 = 0 → Divisible por 3

• (1 + 2 + ... + 1 + 2 + 0 + 1)% 3 = 1 → No es divisible por 3

• (1 + 2 + ... + 1 + 2 + 0 + 1 + 2)% 3 = 0 → Divisible por 3

Entonces. . .

. . . sí; basta con calcular el módulo de n y 3 ©

Los jueces (UCM) AdaByron 2017 15 / 74

Page 48: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

I. ¾Es múltiplo de 3?Aritmética modular al rescate

½Lo importante es cómo termina la serie de sumas!

• (1 + 2 + ... + 1 + 2 + 0)% 3

= 0 → Divisible por 3

• (1 + 2 + ... + 1 + 2 + 0 + 1)% 3 = 1 → No es divisible por 3

• (1 + 2 + ... + 1 + 2 + 0 + 1 + 2)% 3 = 0 → Divisible por 3

Entonces. . .

. . . sí; basta con calcular el módulo de n y 3 ©

Los jueces (UCM) AdaByron 2017 15 / 74

Page 49: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

I. ¾Es múltiplo de 3?Aritmética modular al rescate

½Lo importante es cómo termina la serie de sumas!

• (1 + 2 + ... + 1 + 2 + 0)% 3 = 0

→ Divisible por 3

• (1 + 2 + ... + 1 + 2 + 0 + 1)% 3 = 1 → No es divisible por 3

• (1 + 2 + ... + 1 + 2 + 0 + 1 + 2)% 3 = 0 → Divisible por 3

Entonces. . .

. . . sí; basta con calcular el módulo de n y 3 ©

Los jueces (UCM) AdaByron 2017 15 / 74

Page 50: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

I. ¾Es múltiplo de 3?Aritmética modular al rescate

½Lo importante es cómo termina la serie de sumas!

• (1 + 2 + ... + 1 + 2 + 0)% 3 = 0 → Divisible por 3

• (1 + 2 + ... + 1 + 2 + 0 + 1)% 3 = 1 → No es divisible por 3

• (1 + 2 + ... + 1 + 2 + 0 + 1 + 2)% 3 = 0 → Divisible por 3

Entonces. . .

. . . sí; basta con calcular el módulo de n y 3 ©

Los jueces (UCM) AdaByron 2017 15 / 74

Page 51: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

I. ¾Es múltiplo de 3?Aritmética modular al rescate

½Lo importante es cómo termina la serie de sumas!

• (1 + 2 + ... + 1 + 2 + 0)% 3 = 0 → Divisible por 3

• (1 + 2 + ... + 1 + 2 + 0 + 1)% 3

= 1 → No es divisible por 3

• (1 + 2 + ... + 1 + 2 + 0 + 1 + 2)% 3 = 0 → Divisible por 3

Entonces. . .

. . . sí; basta con calcular el módulo de n y 3 ©

Los jueces (UCM) AdaByron 2017 15 / 74

Page 52: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

I. ¾Es múltiplo de 3?Aritmética modular al rescate

½Lo importante es cómo termina la serie de sumas!

• (1 + 2 + ... + 1 + 2 + 0)% 3 = 0 → Divisible por 3

• (1 + 2 + ... + 1 + 2 + 0 + 1)% 3 = 1 → No es divisible por 3

• (1 + 2 + ... + 1 + 2 + 0 + 1 + 2)% 3 = 0 → Divisible por 3

Entonces. . .

. . . sí; basta con calcular el módulo de n y 3 ©

Los jueces (UCM) AdaByron 2017 15 / 74

Page 53: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

I. ¾Es múltiplo de 3?Aritmética modular al rescate

½Lo importante es cómo termina la serie de sumas!

• (1 + 2 + ... + 1 + 2 + 0)% 3 = 0 → Divisible por 3

• (1 + 2 + ... + 1 + 2 + 0 + 1)% 3 = 1 → No es divisible por 3

• (1 + 2 + ... + 1 + 2 + 0 + 1 + 2)% 3

= 0 → Divisible por 3

Entonces. . .

. . . sí; basta con calcular el módulo de n y 3 ©

Los jueces (UCM) AdaByron 2017 15 / 74

Page 54: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

I. ¾Es múltiplo de 3?Aritmética modular al rescate

½Lo importante es cómo termina la serie de sumas!

• (1 + 2 + ... + 1 + 2 + 0)% 3 = 0 → Divisible por 3

• (1 + 2 + ... + 1 + 2 + 0 + 1)% 3 = 1 → No es divisible por 3

• (1 + 2 + ... + 1 + 2 + 0 + 1 + 2)% 3 = 0 → Divisible por 3

Entonces. . .

. . . sí; basta con calcular el módulo de n y 3 ©

Los jueces (UCM) AdaByron 2017 15 / 74

Page 55: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

I. ¾Es múltiplo de 3?Aritmética modular al rescate

½Lo importante es cómo termina la serie de sumas!

• (1 + 2 + ... + 1 + 2 + 0)% 3 = 0 → Divisible por 3

• (1 + 2 + ... + 1 + 2 + 0 + 1)% 3 = 1 → No es divisible por 3

• (1 + 2 + ... + 1 + 2 + 0 + 1 + 2)% 3 = 0 → Divisible por 3

Entonces. . .

. . . sí; basta con calcular el módulo de n y 3 ©

Los jueces (UCM) AdaByron 2017 15 / 74

Page 56: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

D. Amigo invisible

Envíos Válidos % éxito

32 6 18%

Los jueces (UCM) AdaByron 2017 16 / 74

Page 57: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

D. Amigo invisibleRecordatorio del enunciado

Dada las asignaciones conocidas de un amigo invisible, ¾podemos averiguar el

resto?

Los jueces (UCM) AdaByron 2017 17 / 74

Page 58: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

D. Amigo invisible

La asignación es una permutación.

1 2 3 4 5 6 7 8 9

1 2 3 4 5 6 7 8 9

Se pueden analizar los ciclos y pensar en permutaciones.

Los jueces (UCM) AdaByron 2017 18 / 74

Page 59: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

D. Amigo invisibleComo un grafo

• Una persona es un nodo.

• Una arista une el que regala con el regalado.

• En la asignación completa, cada nodo tiene una arista que sale, y una

arista que entra.

• No puede haber autoaristas (nadie se regala a sí mismo).

• Si hay n nodos, tiene que haber n aristas.

Analizamos las opciones dependiendo de cuántas aristas falten

Los jueces (UCM) AdaByron 2017 19 / 74

Page 60: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

D. Amigo invisibleComo un grafo

• Una persona es un nodo.

• Una arista une el que regala con el regalado.

• En la asignación completa, cada nodo tiene una arista que sale, y una

arista que entra.

• No puede haber autoaristas (nadie se regala a sí mismo).

• Si hay n nodos, tiene que haber n aristas.

Analizamos las opciones dependiendo de cuántas aristas falten

Los jueces (UCM) AdaByron 2017 19 / 74

Page 61: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

D. Amigo invisibleFaltan 0 aristas

Lo sabemos todo

Los jueces (UCM) AdaByron 2017 20 / 74

Page 62: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

D. Amigo invisibleFaltan 0 aristas

Lo sabemos todo

Los jueces (UCM) AdaByron 2017 20 / 74

Page 63: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

D. Amigo invisibleFalta 1 aristas

Caso inválido Asignación única

Los jueces (UCM) AdaByron 2017 21 / 74

Page 64: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

D. Amigo invisibleFalta 1 aristas

Caso inválido

Asignación única

Los jueces (UCM) AdaByron 2017 21 / 74

Page 65: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

D. Amigo invisibleFalta 1 aristas

Caso inválido

Asignación única

Los jueces (UCM) AdaByron 2017 21 / 74

Page 66: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

D. Amigo invisibleFalta 1 aristas

Caso inválido Asignación única

Los jueces (UCM) AdaByron 2017 21 / 74

Page 67: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

D. Amigo invisibleFaltan 2 aristas

Asignación única Asignación única Asignación múltiple

Los jueces (UCM) AdaByron 2017 22 / 74

Page 68: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

D. Amigo invisibleFaltan 2 aristas

Asignación única

Asignación única Asignación múltiple

Los jueces (UCM) AdaByron 2017 22 / 74

Page 69: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

D. Amigo invisibleFaltan 2 aristas

Asignación única

Asignación única Asignación múltiple

Los jueces (UCM) AdaByron 2017 22 / 74

Page 70: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

D. Amigo invisibleFaltan 2 aristas

Asignación única Asignación única

Asignación múltiple

Los jueces (UCM) AdaByron 2017 22 / 74

Page 71: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

D. Amigo invisibleFaltan 2 aristas

Asignación única Asignación única

Asignación múltiple

Los jueces (UCM) AdaByron 2017 22 / 74

Page 72: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

D. Amigo invisibleFaltan 2 aristas

Asignación única Asignación única Asignación múltiple

Los jueces (UCM) AdaByron 2017 22 / 74

Page 73: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

D. Amigo invisibleFaltan 3 aristas

Múltiple Múltiple Múltiple Múltiple

Los jueces (UCM) AdaByron 2017 23 / 74

Page 74: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

D. Amigo invisibleFaltan 3 aristas

Múltiple

Múltiple Múltiple Múltiple

Los jueces (UCM) AdaByron 2017 23 / 74

Page 75: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

D. Amigo invisibleFaltan 3 aristas

Múltiple

Múltiple Múltiple Múltiple

Los jueces (UCM) AdaByron 2017 23 / 74

Page 76: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

D. Amigo invisibleFaltan 3 aristas

Múltiple Múltiple

Múltiple Múltiple

Los jueces (UCM) AdaByron 2017 23 / 74

Page 77: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

D. Amigo invisibleFaltan 3 aristas

Múltiple Múltiple

Múltiple Múltiple

Los jueces (UCM) AdaByron 2017 23 / 74

Page 78: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

D. Amigo invisibleFaltan 3 aristas

Múltiple Múltiple Múltiple

Múltiple

Los jueces (UCM) AdaByron 2017 23 / 74

Page 79: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

D. Amigo invisibleFaltan 3 aristas

Múltiple Múltiple Múltiple

Múltiple

Los jueces (UCM) AdaByron 2017 23 / 74

Page 80: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

D. Amigo invisibleFaltan 3 aristas

Múltiple Múltiple Múltiple Múltiple

Los jueces (UCM) AdaByron 2017 23 / 74

Page 81: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

D. Amigo invisibleSolución

Controlar los diferentes casos según los grados de entrada y salida, y

contestar lo que corresponda.

Los jueces (UCM) AdaByron 2017 24 / 74

Page 82: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

A. Aritmética verbal

Envíos Válidos % éxito

2 0 0%

Los jueces (UCM) AdaByron 2017 25 / 74

Page 83: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

A. Aritmética verbalRecordatorio del enunciado

ada 767

+ byron ⇒ + 39508

molar 40275

Los jueces (UCM) AdaByron 2017 26 / 74

Page 84: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

A. Aritmética verbalPrimera idea

ada

+ byron

molar

letra dígito

a 0

b 1

d 2

l 3

m 4

n 5

o 6

r 7

y 8

020

+ 18765

46307

Los jueces (UCM) AdaByron 2017 27 / 74

Page 85: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

A. Aritmética verbalPrimera idea

ada

+ byron

molar

letra dígito

a 0

b 1

d 2

l 3

m 4

n 5

o 6

r 7

y 8

020

+ 18765

46307

Los jueces (UCM) AdaByron 2017 27 / 74

Page 86: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

A. Aritmética verbalPrimera idea

ada

+ byron

molar

letra dígito

a 0

b 1

d 2

l 3

m 4

n 5

o 6

r 7

y 8

020

+ 18765

46307

Los jueces (UCM) AdaByron 2017 27 / 74

Page 87: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

A. Aritmética verbalPrimera idea

ada

+ byron

molar

letra dígito

a 0

b 1

d 2

l 3

m 4

n 5

o 6

r 7

y 9

020

+ 19765

46307

Los jueces (UCM) AdaByron 2017 28 / 74

Page 88: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

A. Aritmética verbalPrimera idea

ada

+ byron

molar

letra dígito

a 0

b 1

d 2

l 3

m 4

n 5

o 6

r 8

y 9

020

+ 19865

46308

Los jueces (UCM) AdaByron 2017 29 / 74

Page 89: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

A. Aritmética verbalPrimera idea

Un rato después...

Los jueces (UCM) AdaByron 2017 30 / 74

Page 90: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

A. Aritmética verbalPrimera idea

ada

+ byron

molar

letra dígito

a 7

b 3

d 6

l 2

m 4

n 8

o 0

r 5

y 9

767

+ 39508

40275

Los jueces (UCM) AdaByron 2017 31 / 74

Page 91: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

A. Aritmética verbalPrimera idea

ada

+ byron

molar

letra dígito

a 7

b 3

d 6

l 2

m 4

n 8

o 0

r 5

y 9

767

+ 39508

40275

Los jueces (UCM) AdaByron 2017 31 / 74

Page 92: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

A. Aritmética verbalPensando un poco...

ada

+ byron

molar

letra dígito

a 0

b 1

d 2

l 3

m 4

n 5

o 6

r 7

y 8

020

+ 18765

46307

0+5 nunca será 7 por mucho que toquemos los dígitos de la izquierda

Los jueces (UCM) AdaByron 2017 32 / 74

Page 93: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

A. Aritmética verbalPensando un poco...

ada

+ byron

molar

letra dígito

a 0

b 1

d 2

l 3

m 4

n 5

o 6

r 7

y 8

020

+ 18765

46307

0+5 nunca será 7 por mucho que toquemos los dígitos de la izquierda

Los jueces (UCM) AdaByron 2017 32 / 74

Page 94: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

A. Aritmética verbalPensando un poco...

ada

+ byron

molar

letra dígito

a

b

d

l

m

n

o

r

y

Los jueces (UCM) AdaByron 2017 33 / 74

Page 95: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

A. Aritmética verbalPensando un poco...

0d0

+ byro1

mola2

letra dígito

a 0

b

d

l

m

n 1

o

r 2

y

Los jueces (UCM) AdaByron 2017 34 / 74

Page 96: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

A. Aritmética verbalPensando un poco...

Un instante después...

Los jueces (UCM) AdaByron 2017 35 / 74

Page 97: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

A. Aritmética verbalPensando un poco...

1

7d7

+ byro8

mola5

letra dígito

a 7

b

d

l

m

n 8

o

r 5

y

Los jueces (UCM) AdaByron 2017 36 / 74

Page 98: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

A. Aritmética verbalVuelta atrás

• Asignar dígitos a letras por columnas, volviendo atrás si se llega a unresultado parcial incorrecto.• No puede haber ceros super�uos a la izquierda.

• Cuidado con el caso 0 + 0 = 0

• Al asignar una letra a un dígito, puede que se �jen números más adelante.• En la última �columna� no puede haber acarreo.

• Es más fácil de programar si se da la vuelta a palabras (se está siempre

en el mismo índice).

Los jueces (UCM) AdaByron 2017 37 / 74

Page 99: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

B. Pixel Art

Envíos Válidos % éxito

54 35 64%

Los jueces (UCM) AdaByron 2017 38 / 74

Page 100: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

B. Pixel Art

Negro

Magenta

Verde

Rojo Violeta

Amarillo Cian

1 Decrementar los contadores de colores primarios disponibles hasta que

uno de ellos se haga negativo (caso NO) o bien se termine la entrada

(caso SI).

2 Calcular la cantidad de colores primarios necesarios para pintar la

entrada; después comprobar si hay su�ciente de cada uno de ellos y

cuánto sobra en ese caso.

Los jueces (UCM) AdaByron 2017 39 / 74

Page 101: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

F. Hijos a tope

Envíos Válidos % éxito

11 7 63%

Los jueces (UCM) AdaByron 2017 40 / 74

Page 102: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

F. Hijos a tope

• Generalizar la función y calcular dos resultados:

1 total: el número de generaciones de la subfamilia generacionalmente

completa con mayor número de generaciones.

2 raiz: el número de generaciones de la subfamilia generacionalmente

completa con mayor número de generaciones que cuelga de la raíz.

raiz ≤ total

raiz = 1 total = 2

Los jueces (UCM) AdaByron 2017 41 / 74

Page 103: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

F. Hijos a tope

• Caso base: un nodo raiz = 0 total = 0

• Caso recursivo: con un hijo

raiz = 0 total = 1→ el del hijo

• Caso recursivo: con dos hijos

raiz = min{raizI, raizD}+ 1 total = max{totalI, totalD, raiz}

Los jueces (UCM) AdaByron 2017 42 / 74

Page 104: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

K. Las perlas de la condesa

Envíos Válidos % éxito

60 24 40%

Los jueces (UCM) AdaByron 2017 43 / 74

Page 105: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

K. Las perlas de la condesa

original 2 3 5 7 8 7 5 3 2

recuperadas 2 3 2 3 5 7 5

ordenadas 2 2 3 3 5 5 7

nuevo collar 2 3 5 7 5 3 2

Los jueces (UCM) AdaByron 2017 44 / 74

Page 106: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

K. Las perlas de la condesa

original 2 3 5 7 8 7 5 3 2

recuperadas 2 3 2 3 5 7 5

ordenadas 2 2 3 3 5 5 7

nuevo collar 2 3 5 7 5 3 2

Los jueces (UCM) AdaByron 2017 44 / 74

Page 107: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

K. Las perlas de la condesa

original 2 3 5 7 8 7 5 3 2

recuperadas 2 3 2 3 5 7 5

ordenadas 2 2 3 3 5 5 7

nuevo collar 2 3 5 7 5 3 2

Los jueces (UCM) AdaByron 2017 44 / 74

Page 108: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

K. Las perlas de la condesa

original 2 3 5 7 8 7 5 3 2

recuperadas 2 3 2 3 5 7 5

ordenadas 2 2 3 3 5 5 7

nuevo collar 2 3 5 7 5 3 2

Los jueces (UCM) AdaByron 2017 44 / 74

Page 109: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

G. Chocolate con almendras

Envíos Válidos % éxito

2 1 50%

Los jueces (UCM) AdaByron 2017 45 / 74

Page 110: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

G. Chocolate con almendras

# #

# # # #

# #

# # #

Encontrar el mínimo número de cortes que hacen falta para separar las onzas

con almendras de las que no las tienen.

# #

# # # #

# #

# # #

# #

# # # #

# #

# # #

# #

# # # #

# #

# # #

# #

# # # #

# #

# # #

# #

# # # #

# #

# # #

# #

# # # #

# #

# # #

# #

# # # #

# #

# # #

# #

# # # #

# #

# # #

Los jueces (UCM) AdaByron 2017 46 / 74

Page 111: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

G. Chocolate con almendras

# #

# # # #

# #

# # #

Encontrar el mínimo número de cortes que hacen falta para separar las onzas

con almendras de las que no las tienen.

# #

# # # #

# #

# # #

# #

# # # #

# #

# # #

# #

# # # #

# #

# # #

# #

# # # #

# #

# # #

# #

# # # #

# #

# # #

# #

# # # #

# #

# # #

# #

# # # #

# #

# # #

# #

# # # #

# #

# # #

Los jueces (UCM) AdaByron 2017 46 / 74

Page 112: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

G. Chocolate con almendras

# #

# # # #

# #

# # #

Encontrar el mínimo número de cortes que hacen falta para separar las onzas

con almendras de las que no las tienen.

# #

# # # #

# #

# # #

# #

# # # #

# #

# # #

# #

# # # #

# #

# # #

# #

# # # #

# #

# # #

# #

# # # #

# #

# # #

# #

# # # #

# #

# # #

# #

# # # #

# #

# # #

# #

# # # #

# #

# # #

Los jueces (UCM) AdaByron 2017 46 / 74

Page 113: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

G. Chocolate con almendras

cortes(f1, f2, c1, c2) = 0 si solo hay un sabor

cortes(f1, f2, c1, c2) = min(

minf1≤i<f2

{cortes(f1, i, c1, c2) + cortes(i + 1, f2, c1, c2)},

minc1≤j<c2

{cortes(f1, f2, c1, j) + cortes(f1, f2, j + 1, c2)})+ 1

Implementar con programación dinámica (top-down).

Los jueces (UCM) AdaByron 2017 47 / 74

Page 114: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

G. Chocolate con almendras

cortes(f1, f2, c1, c2) = 0 si solo hay un sabor

cortes(f1, f2, c1, c2) = min(

minf1≤i<f2

{cortes(f1, i, c1, c2) + cortes(i + 1, f2, c1, c2)},

minc1≤j<c2

{cortes(f1, f2, c1, j) + cortes(f1, f2, j + 1, c2)})+ 1

Implementar con programación dinámica (top-down).

Los jueces (UCM) AdaByron 2017 47 / 74

Page 115: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

J. Más listos que el hambre

Envíos Válidos % éxito

7 0 0%

Los jueces (UCM) AdaByron 2017 48 / 74

Page 116: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

J. Más listos que el hambre

1 2

3Salida

Encontrar la forma en la que los dos ratones tienen que colaborar para pulsar

los botones en orden en el menor tiempo posible.

Posibles estados: r1, r2, p

Siguientes estados: se mueve el ratón en r1: r1 + 1, r2, p + dist(r1, r1 + 1)o se mueve el ratón en r2: r1 + 1, r1, max(0, dist(r2, r1 + 1)− p)

Los jueces (UCM) AdaByron 2017 49 / 74

Page 117: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

J. Más listos que el hambre

1 2

3Salida

Encontrar la forma en la que los dos ratones tienen que colaborar para pulsar

los botones en orden en el menor tiempo posible.

Posibles estados: r1, r2

, p

Siguientes estados: se mueve el ratón en r1: r1 + 1, r2, p + dist(r1, r1 + 1)o se mueve el ratón en r2: r1 + 1, r1, max(0, dist(r2, r1 + 1)− p)

Los jueces (UCM) AdaByron 2017 49 / 74

Page 118: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

J. Más listos que el hambre

1 2

3Salida

Encontrar la forma en la que los dos ratones tienen que colaborar para pulsar

los botones en orden en el menor tiempo posible.

Posibles estados: r1, r2, p

Siguientes estados: se mueve el ratón en r1: r1 + 1, r2, p + dist(r1, r1 + 1)o se mueve el ratón en r2: r1 + 1, r1, max(0, dist(r2, r1 + 1)− p)

Los jueces (UCM) AdaByron 2017 49 / 74

Page 119: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

J. Más listos que el hambre

1 2

3Salida

Encontrar la forma en la que los dos ratones tienen que colaborar para pulsar

los botones en orden en el menor tiempo posible.

Posibles estados: r1, r2, p

Siguientes estados: se mueve el ratón en r1: r1 + 1, r2, p + dist(r1, r1 + 1)

o se mueve el ratón en r2: r1 + 1, r1, max(0, dist(r2, r1 + 1)− p)

Los jueces (UCM) AdaByron 2017 49 / 74

Page 120: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

J. Más listos que el hambre

1 2

3Salida

Encontrar la forma en la que los dos ratones tienen que colaborar para pulsar

los botones en orden en el menor tiempo posible.

Posibles estados: r1, r2, p

Siguientes estados: se mueve el ratón en r1: r1 + 1, r2, p + dist(r1, r1 + 1)o se mueve el ratón en r2: r1 + 1, r1, max(0, dist(r2, r1 + 1)− p)

Los jueces (UCM) AdaByron 2017 49 / 74

Page 121: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

J. Más listos que el hambre

Programación dinámica

ratones(r1, r2, p) = max(p, dist(r2, salida)) si r1 es la salida

ratones(r1, r2, p) = min(ratones(r1 + 1, r2, p + dist(r1, r1 + 1)),

ratones(r1 + 1, r1, p′) + p) e.o.c.

donde p′ = max(0, dist(r2, r1 + 1)− p)

Llamada inicial: ratones(1, 0, dist(comienzo, 1))

Los jueces (UCM) AdaByron 2017 50 / 74

Page 122: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

J. Más listos que el hambre

Camino mínimo en el grafo (implícito) de estados

4

6

+16 +4 +4 +4

...

1 2

3

0

4 Salida

1,0,4

2,0,6

3,0,12

4,0,16 4,3,0

12

3,2,0

4,2,4 4,3,2

2,1,2

3,1,8 3,2,2

2

Los jueces (UCM) AdaByron 2017 51 / 74

Page 123: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

L. Durmiendo en albergues

Envíos Válidos % éxito

68 23 33%

Los jueces (UCM) AdaByron 2017 52 / 74

Page 124: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

L. Durmiendo en albergues

Dadas las ocupaciones de camas en un albergue con las camas en hileras, ¾en

qué cama duermes para mantenerte lo más alejado posible de cualquier otro

huésped?

Los jueces (UCM) AdaByron 2017 53 / 74

Page 125: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

L. Durmiendo en albergues

Solución 1: Para cada posición se puede calcular cuál es el vecino más

cercano, recorriendo el vector hacia la izquierda y derecha.

Los jueces (UCM) AdaByron 2017 54 / 74

Page 126: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

L. Durmiendo en albergues

Solución 1: Para cada posición se puede calcular cuál es el vecino más

cercano, recorriendo el vector hacia la izquierda y derecha.

Los jueces (UCM) AdaByron 2017 54 / 74

Page 127: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

L. Durmiendo en albergues

Solución 1: Para cada posición se puede calcular cuál es el vecino más

cercano, recorriendo el vector hacia la izquierda y derecha.

Los jueces (UCM) AdaByron 2017 54 / 74

Page 128: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

L. Durmiendo en albergues

Solución 1: Para cada posición se puede calcular cuál es el vecino más

cercano, recorriendo el vector hacia la izquierda y derecha.

Los jueces (UCM) AdaByron 2017 54 / 74

Page 129: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

L. Durmiendo en albergues

Solución 1: Para cada posición se puede calcular cuál es el vecino más

cercano, recorriendo el vector hacia la izquierda y derecha.

Los jueces (UCM) AdaByron 2017 54 / 74

Page 130: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

L. Durmiendo en albergues

½Lento!

Por cada posición puedes necesitar recorrer el albergue/vector entero. Con

hasta 500.000 camas, eso signi�ca TLE.

Los jueces (UCM) AdaByron 2017 55 / 74

Page 131: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

L. Durmiendo en albergues

½Lento!

Por cada posición puedes necesitar recorrer el albergue/vector entero. Con

hasta 500.000 camas, eso signi�ca TLE.

Los jueces (UCM) AdaByron 2017 55 / 74

Page 132: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

L. Durmiendo en albergues

½Lento!

Por cada posición puedes necesitar recorrer el albergue/vector entero. Con

hasta 500.000 camas, eso signi�ca TLE.

Los jueces (UCM) AdaByron 2017 55 / 74

Page 133: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

L. Durmiendo en albergues

Solución 2: recorrer el vector midiendo las longitudes de los intervalos sin

camas, quedándose con la más grande, l.

La solución es l/2.

Cuidado: en los intervalos de los extremos no necesitamos ponermos en el

centro.

Se tratan de forma especial.

Los jueces (UCM) AdaByron 2017 56 / 74

Page 134: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

L. Durmiendo en albergues

Solución 2: recorrer el vector midiendo las longitudes de los intervalos sin

camas, quedándose con la más grande, l.

La solución es l/2.

Cuidado: en los intervalos de los extremos no necesitamos ponermos en el

centro.

Se tratan de forma especial.

Los jueces (UCM) AdaByron 2017 56 / 74

Page 135: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

L. Durmiendo en albergues

Solución 2: recorrer el vector midiendo las longitudes de los intervalos sin

camas, quedándose con la más grande, l.

La solución es l/2.

Cuidado: en los intervalos de los extremos no necesitamos ponermos en el

centro.

Se tratan de forma especial.

Los jueces (UCM) AdaByron 2017 56 / 74

Page 136: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

L. Durmiendo en albergues

Otras soluciones:

• En Java line.split("X").

Los jueces (UCM) AdaByron 2017 57 / 74

Page 137: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

H. Las partituras de la orquesta

Envíos Válidos % éxito

56 5 8%

Los jueces (UCM) AdaByron 2017 58 / 74

Page 138: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

H. Las partituras de la orquesta

En una orquesta, distribuir los p atriles entre los distintos instrumentos para

minimizar el número de músicos agolpados en cada instrumento.

Los jueces (UCM) AdaByron 2017 59 / 74

Page 139: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

H. Las partituras de la orquesta

Solución 1 - Estrategia voraz

Dar un atril/partitura a cada instrumento

Mientras queden atriles/partituras por repartir

Dar un atril al instrumento con más músicos por partitura

Escribir la respuesta

Uso de una cola de prioridad de máximos con una entrada por instrumento

ordenada por la relación musicos/atriles.

Los jueces (UCM) AdaByron 2017 60 / 74

Page 140: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

H. Las partituras de la orquesta

Solución 1 - Estrategia voraz

Dar un atril/partitura a cada instrumento

Mientras queden atriles/partituras por repartir

Dar un atril al instrumento con más músicos por partitura

Escribir la respuesta

Uso de una cola de prioridad de máximos con una entrada por instrumento

ordenada por la relación musicos/atriles.

Los jueces (UCM) AdaByron 2017 60 / 74

Page 141: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

H. Las partituras de la orquesta

Solución 2 - Búsqueda binaria en el espacio de soluciones

Si admitimos un máximo de K personas en un atril, ¾tenemos atriles para

todos?

• Si K = 0, no.• Si K = n, sí.• Entre 0 y n está la respuesta.

Solución

Hacemos búsqueda binaria de la respuesta

Los jueces (UCM) AdaByron 2017 61 / 74

Page 142: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

H. Las partituras de la orquesta

Solución 2 - Búsqueda binaria en el espacio de soluciones

Si admitimos un máximo de K personas en un atril, ¾tenemos atriles para

todos?

• Si K = 0, no.• Si K = n, sí.• Entre 0 y n está la respuesta.

Solución

Hacemos búsqueda binaria de la respuesta

Los jueces (UCM) AdaByron 2017 61 / 74

Page 143: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

H. Las partituras de la orquesta

Solución 2 - Búsqueda binaria en el espacio de soluciones

Si admitimos un máximo de K personas en un atril, ¾tenemos atriles para

todos?

• Si K = 0, no.• Si K = n, sí.• Entre 0 y n está la respuesta.

Solución

Hacemos búsqueda binaria de la respuesta

Los jueces (UCM) AdaByron 2017 61 / 74

Page 144: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

H. Las partituras de la orquesta

Fallos

• En la solución voraz, no se puede dividir el dato leído entre dos y volverlo

a meter

11 4

4 6 7 8

Los jueces (UCM) AdaByron 2017 62 / 74

Page 145: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

E. El entretenimiento de las máquinas

Envíos Válidos % éxito

- - -

Los jueces (UCM) AdaByron 2017 63 / 74

Page 146: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

E. El entretenimiento de las máquinas

Contar el número de apariciones de una colección de palabras en una sopa de

letras.

Posible solución

Para cada posición en la sopa

Para cada dirección

Para cada palabra

si está la palabra

apariciones[palabra]++

Los jueces (UCM) AdaByron 2017 64 / 74

Page 147: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

E. El entretenimiento de las máquinas

Contar el número de apariciones de una colección de palabras en una sopa de

letras.

Posible solución

Para cada posición en la sopa

Para cada dirección

Para cada palabra

si está la palabra

apariciones[palabra]++

Los jueces (UCM) AdaByron 2017 64 / 74

Page 148: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

E. El entretenimiento de las máquinas

Entrada

• Tamaño de la sopa: hasta 200 x 200

• Número de palabras: hasta 20.000

• Tamaño de cada palabra: hasta 200 (independientemente del tamaño de

la sopa)

• Ocho direcciones

½Lento!

La solución anterior es demasiado lenta.

Los jueces (UCM) AdaByron 2017 65 / 74

Page 149: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

E. El entretenimiento de las máquinas

Entrada

• Tamaño de la sopa: hasta 200 x 200

• Número de palabras: hasta 20.000

• Tamaño de cada palabra: hasta 200 (independientemente del tamaño de

la sopa)

• Ocho direcciones

½Lento!

La solución anterior es demasiado lenta.

Los jueces (UCM) AdaByron 2017 65 / 74

Page 150: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

E. El entretenimiento de las máquinas

• Se debe utilizar alguna estructura que reduzca la complejidad.

• Hasta 20.000 palabras en el diccionario. Preferible eliminar ese factor.

• Almacenar en alguna estructura todas las palabras

Los jueces (UCM) AdaByron 2017 66 / 74

Page 151: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

E. El entretenimiento de las máquinas

• Se debe utilizar alguna estructura que reduzca la complejidad.

• Hasta 20.000 palabras en el diccionario. Preferible eliminar ese factor.

• Almacenar en alguna estructura todas las palabras

Los jueces (UCM) AdaByron 2017 66 / 74

Page 152: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

E. El entretenimiento de las máquinas

• Se debe utilizar alguna estructura que reduzca la complejidad.

• Hasta 20.000 palabras en el diccionario. Preferible eliminar ese factor.

• Almacenar en alguna estructura todas las palabras

Los jueces (UCM) AdaByron 2017 66 / 74

Page 153: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

E. El entretenimiento de las máquinas

Almacenar en una estructura todo el diccionario de forma que para cada

posición se busquen a la vez todas las palabras.

Solución

Estructura de árbol binario: trie

Los jueces (UCM) AdaByron 2017 67 / 74

Page 154: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

E. El entretenimiento de las máquinas

Alternativas

• Se puede añadir al diccionario/trie las palabras invertidas, para ahorrar

los recorridos en cuatro de las direcciones.

Los jueces (UCM) AdaByron 2017 68 / 74

Page 155: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

C. El profesor de música

Envíos Válidos % éxito

- - -

Los jueces (UCM) AdaByron 2017 69 / 74

Page 156: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

C. El profesor de música

Enunciado: Encontrar el pueblo donde de muda el profesor de música para

minimizar los kilómetros recorridos.

Enunciado alternativo: Dado un grafo no dirigido, encontrar el nodo que haga

que el ciclo que pasa por él y otros k nodos dados tenga longitud mínima.

Los jueces (UCM) AdaByron 2017 70 / 74

Page 157: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

C. El profesor de música

La respuesta depende de:

• El orden en el que se visitan los k nodos.

• El nodo seleccionado.

para cada camino que visite los k nodos

para cada nodo/pueblo

calcular la longitud del ciclo

Los jueces (UCM) AdaByron 2017 71 / 74

Page 158: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

C. El profesor de música

La respuesta depende de:

• El orden en el que se visitan los k nodos.

• El nodo seleccionado.

para cada camino que visite los k nodos

para cada nodo/pueblo

calcular la longitud del ciclo

Los jueces (UCM) AdaByron 2017 71 / 74

Page 159: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

C. El profesor de música

Consideraciones

• Los nodos �jados son como mucho 6• 6! = 720 caminos distintos posibles (o menos si eliminamos simetrías)

• Los nodos distintos son hasta 5.000.

• Si la comprobación para cada posibilidad es rápida, es factible probar

todas las posibilidades (hasta 720 ∗ 4994).

Los jueces (UCM) AdaByron 2017 72 / 74

Page 160: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

C. El profesor de música

Consideraciones

• Los nodos �jados son como mucho 6• 6! = 720 caminos distintos posibles (o menos si eliminamos simetrías)

• Los nodos distintos son hasta 5.000.

• Si la comprobación para cada posibilidad es rápida, es factible probar

todas las posibilidades (hasta 720 ∗ 4994).

Los jueces (UCM) AdaByron 2017 72 / 74

Page 161: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

C. El profesor de música

Solución

• Para cada pueblo con colegio, precalcular la distancia mínima con el restode pueblos

• Hasta 6 ejecuciones de Dijkstra por consulta

• Para cada par [camino, nodo], utilizar esa información precalculada para

sacar la longitud del camino.

• Quedarse con la más corta.

Los jueces (UCM) AdaByron 2017 73 / 74

Page 162: AdaByron 2017 - Esbozo de las soluciones

Soluciones a los problemas

C. El profesor de música

Solución mejorada

• Para cada pueblo con colegio, precalcular la distancia mínima con el restode pueblos

• Hasta 6 ejecuciones de Dijkstra por consulta

• Para cada posible [inicio, �n] de camino, calcular la longitud del camino

más corto.

• Para cada [inicio, �n, nodo], utilizar esa información precalculada para

calcular la longitud del camino.

• Quedarse con la más corta.

En lugar de 6! comprobaciones por cada nodo, habrá 6 ∗ 5.

Los jueces (UCM) AdaByron 2017 74 / 74