GCJ08_RoyPalacios

27
Google Code Jam 2008 code.google.com/codejam

description

Pautas para el google code jam

Transcript of GCJ08_RoyPalacios

Page 1: GCJ08_RoyPalacios

Google Code Jam 2008

code.google.com/codejam

Page 2: GCJ08_RoyPalacios

code.google.com/codejam

Page 3: GCJ08_RoyPalacios

Competencia de programación

?

Page 4: GCJ08_RoyPalacios

Competencia de programación

!entrada salidaPROGRAM

A

Page 5: GCJ08_RoyPalacios

Competencia de programación

entrada salidaPROGRAM

A

Se envía durante el concurso

Se descarga durante

el concurso

Page 6: GCJ08_RoyPalacios

Lenguajes de programación

Se puede usar cualquier lenguaje de programación:

- C/C++- Java- C#- VB- Python- Pascal...

Lo importante es poder generar la salida.

Page 7: GCJ08_RoyPalacios

Temas incluidos

Implementación directa PROGRAMACIÓN

Algorítmos en grafosProgramación dinámica ALGORÍTMOSGeometría computacional

Teoría de númerosMatemática combinatoriaMATEMÁTICASProbabilidad y estadística

Page 8: GCJ08_RoyPalacios

Fases del concurso

Fase Número de participantesQualification Round Ilimitado

Online Round 1 Un problema resuelto

Online Round 2 2520

Online Round 3 1000

Onsite Locals 500

Onsite Finals 100

Page 9: GCJ08_RoyPalacios

Fechas clave

Fase Fecha y hora (GMT/UTC -5)Qualification Round Miercoles 16 de julio 6:00 pm

Online Round 1 Viernes 25 al jueves 31 de julioOnline Round 2 Sabado 2 de agosto 11:00amOnline Round 3 Sabado 9 de agosto 11:00am

Onsite Locals Lunes 29 de septiembre

Onsite Finals Viernes 14 de noviembre

Page 10: GCJ08_RoyPalacios

Premios

Puesto Premio ($)

1 10000

2 5000

3 2500

4-10 1500

11-30 1000

31-50 750

51-75 500

76-100 250

1-500 Viaje

Page 11: GCJ08_RoyPalacios

code.google.com/codejam

Page 12: GCJ08_RoyPalacios

4 Problemas

Page 13: GCJ08_RoyPalacios
Page 14: GCJ08_RoyPalacios

A = (x1, y1)B = (x2, y2)C = (x3, y3)

•ABC es triangulo A, B y C son no colineales•A, B y C son colineales AB.ACort = 0•ABC es triangulo (x2-x1, y2-y1).(y3-y1, x3-x1) = 0

•d1, d2 <= d3 cuadrados de los lados de ABC

•ABC es isosceles d1 = d2 v d2 = d3 v d3 = d1

13.ABC es recto d1 + d2 = d314.ABC es acutangulo d1 + d2 > d315.ABC es obtusangulo d1 + d2 < d3

Page 15: GCJ08_RoyPalacios

Editor Dev-C++

Page 16: GCJ08_RoyPalacios

Problema

• Se tiene una malla rectangular con f filas y c columnas, se efectua la siguiente operación k veces:- Seleccionar una casilla al azar, A- Seleccionar una casilla al azar, B- Colorear las casillas del rectángulo delimitado por A y B

• Calcular el valor esperado para el número de casillas coloreadas luego de las k operaciones

0<=f, c<=1000 0<=k<=100

Page 17: GCJ08_RoyPalacios

Problema

Cada casilla es seleccionada al azar, con distribucion uniforme, y cada seleccion es independiente de las anteriores.

En la figura, f = 5, c = 7, k = 3Un conjunto posible de selecciones:(0,1); (3,2)(3,6); (4,0)(0,6); (0,5)

Page 18: GCJ08_RoyPalacios

Problema

Cada casilla es seleccionada al azar, con distribucion uniforme, y cada seleccion es independiente de las anteriores.

En la figura, f = 5, c = 7, k = 3Un conjunto posible de selecciones:(0,1); (3,2)(3,6); (4,0)(0,6); (0,5)

Page 19: GCJ08_RoyPalacios

Solución

i

j

Pij

Pij -> probabilidad de que la casilla (i, j) esté coloreada luego de 1 operación

Page 20: GCJ08_RoyPalacios

Solución

i

j

Pij -> probabilidad de que la casilla (i, j) esté coloreada luego de 1 operación

Pij

1 - Pij

Pij

1 - Pij

Pij

1 - Pij

Pij

1 - Pij

K=1K=2

K=3

k=4

Luego de k operaciones: No pintado - > (1 - Pij )k

Pintado - > 1 - (1 - Pij )k

1

K=0

….

E = Sumatoria( 1 - (1 - Pij )k )

Page 21: GCJ08_RoyPalacios

Solución

i

j

1 - Pij -> probabilidad de que la casilla (i, j) no esté coloreada luego de 1 operación

# total de formas : (fc) 2

# formas de seleccionar 2 casillas que no contengan a la (i, j):

i2.c2 + (f-i-1) 2.c2 + j2.f2 + (c-j-1) 2.f2

- i2.j2 – i2.(c-j-1) 2 – j2.(f-i-1) 2 – (f-i-1) 2.(c-j-1) 2

1 – Pij = # formas de seleccionar 2 casillas que no contengan a la (i, j) # total de formas de seleccionar 2 casillas

0

0

Page 22: GCJ08_RoyPalacios

100 000 000 -> 1 segundo

Page 23: GCJ08_RoyPalacios
Page 24: GCJ08_RoyPalacios

1

2

34

Page 25: GCJ08_RoyPalacios

1

2

34

56

Page 26: GCJ08_RoyPalacios

X = Min A = F(puntos disponibles)

n = 3 -> devolver arean < 3 -> devolver infinitoPara cada uno de los n^3 triangulos: -> Area + F(puntos disponibles – 1 punto) -> Area + F(puntos disponibles – 2 puntos) -> Area + F(puntos disponibles – 3 puntos) -> actualizar minimodevolver minimo

-> F(puntos disponibles)Puntos disponibles -> cadena de 0 y 1 de tamaño n

-> 2^n combinaciones

Complejidad exponencial : 2^n * n^3

F(puntos disponibles)

Page 27: GCJ08_RoyPalacios

K numeros: 0 <= n0, n1, n2 … , nk-1 <= max

Se puede obtener N como suma de algunos de los numeros, utilizandolos maximo 1 vez cada uno?

F(S, i) -> Sumar S con numeros del ni al nk-1 (Si/No) -> 2 opciones, usar/no usar ni -> Se usa ni:

si F(S – ni, i+1) devolver Si -> No se usa:

si F(S, i+1) devolver Si -> devolver No

Complejidad (k*max)*(k)

Caso general: Complejidad Exponencial n*(2^n) Probando todos los subconjuntos