Olimpiadi Italiane di Informatica. Selezione Territoriale Aprile Testi dei problemi

Documenti analoghi
PuzzleFountain. Amico Logico

PuzzleFountain. Amico Logico

International Olympiad in Informatics 2013

PuzzleFountain. Amico Logico

Secondo allenamento. Olimpiadi Italiane di Informatica - Selezione territoriale

ESERCITAZIONE MICROECONOMIA (CORSO B) ESEMPI DI ESERCIZI DI TEORIA DEI GIOCHI

Secondo allenamento. Olimpiadi Italiane di Informatica - Selezione territoriale

FINALE del 23 campionato: 29 agosto giornata

Tetrapyramis di Alberto Fabris

Laboratorio di Architettura degli Elaboratori A.A. 2014/15 Programmazione Assembly

Tetrapyramis di Alberto Fabris

Tetrapyramis. organizza. 6x6. Gara di giochii logici a squadre per Istituti scolastici

Fogli Elettronici. Idoneità Informatica Prof. Mauro Gaspari

L INTERFACCIA GRAFICA DI EXCEL

Geometria Prova scritta, appello unico, sessione autunnale Corso di laurea in fisica A.A 2017/2018 Canali A C, e L Pa

Tetrapyramis. organizza. Chi cerchia trova. ALBERTO FABRIS giovedì 19 gennaio 2017, (orario server Italia) Libretto di gara

Tetrapyramis. organizza Halloween. Gara di giochii logici a squadre per Istituti scolastici

Tetrapyramis. organizza. Fritto misto. Gara di giochii logici a squadre per Istituti scolastici

Dispense Associazione PRELIMINARY DRAFT

Kangourou Italia Gara del 28 marzo 2008 Categoria Student Per studenti di quarta o quinta della secondaria di secondo grado

La rivista di giochi logici. Amico Logico. organizza il. 2 CAMPIONATO STUDENTESCO DI GIOCHI LOGICI per l anno scolastico

Olimpiadi Italiane di Informatica. Selezione Territoriale 14 Aprile Testi e soluzioni ufficiali dei problemi

3.3 FORMULAZIONE DEL MODELLO E CONDIZIONI DI

13 Esercizi di Riepilogo

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software

La poltrona di Korrot (korrot)

Laboratorio di Programmazione (Corso di Laurea in Informatica)

I/O avanzato e File Esercizi proposti

Tetrapyramis. organizza. Duello. Gara di giochii logici a squadre per Istituti Scolastici

Fondamenti di Informatica T-1

I tipi strutturati e i record in C++

TETR RAPYRAMIS. di Alberto Fabris. organizza il. 3 CAMPIONATOO STUDENTESCO DI GIOCHII LOGICI per l anno scolastico

Kangourou Italia Gara del 19 marzo 2009 Categoria Benjamin Per studenti di prima o seconda della scuola secondaria di primo grado

La rivista di giochi logici. Amico Logico. organizza il. 2 CAMPIONATO STUDENTESCO DI GIOCHI LOGICI per l anno scolastico

Kangourou della Matematica 2018 Coppa Kangourou a squadre Semifinale turno A Cervia, 3 maggio Quesiti

Laboratorio di Programmazione (Corso di Laurea in Informatica)

Esercizi

Tetrapyramis. organizza. Divide et Impera. Gara di giochii logici a squadre per Istituti Scolastici

Laboratorio di Architettura degli Elaboratori A.A. 2016/17 Programmazione Assembly

Corso di Fondamenti di Informatica Prof Aldo Franco Dragoni Prova Scritta 25/07/2011

Esercizi (semplici algoritmi)

Prof. Massimiliano Giacomin 21 dicembre NOME: COGNOME: MATR: Scrivere nome, cognome e matricola chiaramente in caratteri maiuscoli

I fogli elettronici. Informatica Fogli elettronici 1

Prof. Marco Masseroli

Laboratorio di Programmazione Laurea in Bioinformatica

La rivista di giochi logici. Amico Logico. organizza il. 2 CAMPIONATO STUDENTESCO DI GIOCHI LOGICI per l anno scolastico

PuzzleFountain. Amico Logico

csp & backtracking informatica e laboratorio di programmazione Alberto Ferrari Informatica e Laboratorio di Programmazione

Fondamenti di Informatica T-1

GARA5 SECONDARIA DI SECONDO GRADO INDIVIDUALE

INTERSTENO 2013Ghent Campionato del mondo professionale di elaborazione testi.

x 1 x 2 x 3 x 5 La base iniziale è B 0 = I e risulta x B 0 = , x N 0 = Iterazione 0. Calcolo dei costi ridotti. γ 0 = c N 0 (N 0 ) T c B 0 =

Gara Matematica. Dipartimento di Matematica Ulisse Dini. Viale Morgagni 67/a Firenze. Soluzioni edizione 2011

Laboratorio di Ricerca Operativa Cad Ingegneria Gestionale (BGER3 - I semestre) a.a Homework n 23. Docente: Laura Palagi

Ingresso ed Uscita in C. Informatica 1 / 15

SIMULAZIONE TEST INVALSI

definisce un vettore di 4 puntatori a carattere (allocata memoria per 4 puntatori)!

Tetrapyramis. organizza. Cerchiamo. Gara online di giochi logici a squadre per Istituti Scolastici

Algoritmi, Strutture Dati e Programmi. UD 5.a: Searching (parte 1)

CORSO DI INFORMATICA GENERALE. Università degli Studi di Bergamo

Tetrapyramis. organizza. Cerchiamo. Gara online di giochi logici a squadre per Istituti Scolastici

Informatica Generale Andrea Corradini Algoritmi: ordinamento per inserimento e ricorsione

Matematica Lezione 5

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura

n deve essere maggiore di 0, altrimenti il metodo restituisce null.

Prova di Laboratorio del [ Corso A-B di Programmazione (A.A. 2004/05) Esempio: Media Modalità di consegna:

APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO IX.2017

TETRAPYRAMIS. di Alberto Fabris. organizza il 3 CAMPIONATOO STUDENTESCO DI GIOCHII LOGICI. per l anno scolastico

Linguaggio Macchina. Numeri binari. E il linguaggio che il microprocessore comprende. In Esadecimale

Applicazioni statistiche e utilizzo del package statistico Spss - 3

I fogli elettronici. Capitolo 12 Fluency Conoscere e usare l informatica

Lezione 6 Selection/Insertion Sort su interi e stringhe

Tetrapyramis. organizza. Warm up. Gara di giochii logici a squadre per Istituti Scolastici

Sintesi di una funzione logica con le mappe di Karnaugh

Tetrapyramis di Alberto Fabris

Parco avventura (carrucole)

Elementi di informatica e Programmazione

Excel Base- Lezione 3. Barbara Pocobelli Estav Nord Ovest. Il comando Trova

GRAFICO DI PARETO. variabile rispetto a cui si vuole ordinare (ossia nel nostro esempio

Permutazioni. 1 Introduzione

Informatica B. Facoltà di Ingegneria Industriale Laurea in Ingegneria Energetica, Meccanica e dei Trasporti. Prof. Marco Masseroli

Foglio Elettronico Lezione 1

Caratteri e stringhe

Corso di Informatica Modulo T1 1 - Il concetto di problema

Quesiti. 1. Un numero primo Qual è il più grande numero primo minore di 30 che può essere espresso come somma di due numeri primi?

I/O INTERATTIVO. scanf: quello che è indispensabile sapere printf: quello che è utile sapere

Istituto Scolastico Paritario Vincenza Altamura. Scuola Primaria. Anno scolastico 2015/2016 Progettazione Didattica Disciplinare per la classe III

Tetrapyramis. organizza. Ricominciamo. Gara di giochii logici a squadre per Istituti scolastici. 2015, (orario server Italia)

Laboratorio di Programmazione Laurea in Bioinformatica

I Fogli Elettronici (Microsoft Excel)

Quesiti 1. La percentuale 2. Cinque cifre dispari All'interno di un quadrato 4. Giovani e adulti 5. Un numero fortunato Resti e divisioni

Terza Edizione Giochi di Achille ( ) - Olimpiadi di Matematica Soluzioni Categoria E5 (Alunni di quinta elementare)

Laboratorio di Algoritmi

Tetrapyramis. organizza. Diagonalmente. Gara di giochii logici a squadre per Istituti scolastici. 2016, (orario server Italia)

Transcript:

Olimpiadi Italiane di Informatica Selezione Territoriale 2018 18 Aprile 2018 Testi dei problemi

Testi dei problemi Giorgio Audrito, Massimo Cairo, William Di Luigi, Luigi Laura, Gemma Martini, Edoardo Morassutto, Dario Ostuni, Romeo Rizzi, Luca Versari Coordinamento Monica Gati Supervisione a cura del Comitato per le Olimpiadi di Informatica

Festa canina Mojito, il cane di Monica, vuole organizzare una festa con i suoi amici. Aiutalo a scegliere quali invitare e quali escludere in modo da rendere la festa più bella possibile. Dettagli Mojito ha N amici, ognuno dei quali ha un grado di amicizia A i che indica quanto Mojito apprezzi la sua presenza. Ovviamente nella lista c'è anche qualche antipatico che quindi ha un grado di amicizia negativo. La bellezza della festa è definita come la somma del grado di amicizia degli invitati. Quanto può valere al massimo questa somma? Assunzioni T = 6, sono presenti 6 casi di input. 1 N 10.000, il numero di amici di Mojito. 100 Ai 100, il grado di amicizia dell'i-esimo amico. È anche possibile che Mojito festeggi senza amici, in tal caso la festa ha valore 0. Nota bene: se utilizzi il linguaggio Pascal, fai attenzione al fatto che il valore massimo contenuto in una variabile integer è 32767, troppo piccolo per risolvere questo task completamente. Superando quel numero, infatti, il programma comincerà a salvare numeri imprevedibili (senza mostrarti alcun errore!) per via dell'overflow. Per evitare questo fenomeno ti consigliamo di usare sempre il tipo longint al posto di integer. Dati di input La prima riga del file di input contiene un intero T, il numero di casi di test. Seguono T casi di test, numerati da 1 a T. Ogni caso di test è preceduto da una riga vuota. In ciascun caso di test, la prima riga contiene l'unico intero N. La seconda riga contiene gli N interi separati da spazi, A. Dati di output Il file di output deve contenere la risposta ai casi di test che sei riuscito a risolvere. Per ogni caso di test che hai risolto, il file di output deve contenere una riga con la dicitura: Case #t: k dove t è il numero del caso di test (a partire da 1) e k è il massimo valore di bellezza ottenibile. Esempi di input/output i Input: Download

2 8 1-4 5-2 -1 8 0 1 3-1 -2-4 Output: Download Case #1: 15 Case #2: 0 Spiegazione Nel primo caso d'esempio la soluzione si ottiene invitando il primo, il terzo, il sesto, il settimo e l'ottavo amico, totalizzando una somma di 15. Nel secondo caso d'esempio la soluzione si ottiene non invitando alcun amico, totalizzando quindi 0. Esempi di implementazione Per aiutarti con questo task, abbiamo preparato degli esempi di implementazione di una soluzione. Includono solo le parti di lettura dell'input e scrittura dell'output: Versione C: Download Versione C++: Download Versione Pascal: Download

Antivirus Il nuovo sistema di gara delle Selezioni Territoriali funziona alla grande, ma Mojito non è così convinto... sembra infatti che la nota mascotte delle Olimpiadi abbia fiutato un virus nascosto fra i file inviati da un partecipante! Conosciamo la lunghezza del virus e sappiamo che si ripete uguale nei quattro file che abbiamo ricevuto, ma non sappiamo dove. Aiutaci ad individuare il virus! Dettagli I quattro file F 1, F 2, F 3, F 4 sono dati in input, rappresentati come quattro stringhe di caratteri di lunghezza rispettivamente N, N, N, N. 1 2 3 4 Il virus è una stringa di caratteri V di lunghezza M. La lunghezza M è data in input, ma non si conosce il contenuto della stringa V del virus. Sappiamo con certezza che il virus V appare all'interno di tutti e quattro i file, come sottostringa di caratteri consecutivi. Sappiamo inoltre che NON ci sono altre sottostringhe consecutive di lunghezza M che si ripetono uguali in tutti e quattro i file. Le posizioni dei caratteri nelle stringhe sono numerati a partire da 0. Per ciascuno dei quattro file F i, trova la posizione in cui è inserito il virus, ovvero la posizione dove appare il primo carattere del virus V all'interno della stringa F i. Assunzioni T = 12, sono presenti 12 casi di input. 2 N 1, N 2, N 3, N4 100, i file non sono più lunghi di 100 caratteri. 2 M 20, il virus non è più lungo di 20 caratteri. M min(n 1, N 2, N 3, N 4), il virus non è più lungo del file più corto. Tutti i caratteri dei file sono lettere minuscole dell'alfabeto inglese (dalla a alla z), NON sono presenti spazi. È garantito che il virus esiste ed è unico. Dati di input La prima riga del file di input contiene un intero T, il numero di casi di test. Seguono T casi di test, numerati da 1 a T. Ogni caso di test è preceduto da una riga vuota. In ciascun caso di test: La prima riga contiene quattro interi, N 1, N 2, N 3 e N 4, separati da uno spazio, che corrispondono alla lunghezza di ciascuno dei quattro file. La seconda riga contiene un solo intero M, che corrisponde alla lunghezza del virus. Le successive 4 righe contengono rispettivamente le quattro stringhe F, F, F e F. Dati di output 1 2 3 4

Il file di output deve contenere la risposta ai casi di test che sei riuscito a risolvere. Per ogni caso di test che hai risolto, il file di output deve contenere una riga con la dicitura Case #t: p1 p2 p3 p4 dove t è il numero del caso di test (a partire da 1) e i valori p1, p2, p3, p4 sono le posizioni in cui si trova il virus in ciascuno dei quattro file. Con posizione si intende l'indice del primo carattere del virus, il primo carattere del file ha indice zero. Esempi di input/output Input: Download 2 8 12 10 7 4 ananasso associazione tassonomia massone 6 9 11 10 3 simone ponessimo milionesimo cassonetto Output: Download Case #1: 4 0 1 1 Case #2: 3 1 4 4 Spiegazione Nel primo caso d'esempio il virus è asso: ananasso, associazione, tassonomia, massone. Nel secondo caso d'esempio il virus è one: simone, ponessimo, milionesimo, cassonetto. Nota che sim è presente nei primi tre file ma non nel quarto, quindi non è il virus cercato. Esempi di implementazione Per aiutarti con questo task, abbiamo preparato degli esempi di implementazione di una soluzione. Includono solo le parti di lettura dell'input e scrittura dell'output: Versione C: Download Versione C++: Download Versione Pascal: Download

Radioanalisi fossile È stato appena ritrovato un fossile della rarissima specie Canis mojitus albus, ritenuta antenata della più comune Canis mojitus familiaris. Per analizzarlo, gli scienziati devono trattarlo con delle radiazioni: ogni centimetro dell'osso deve riceverne una precisa quantità. La macchina che fa il trattamento può applicare radiazioni in modo uniforme su un qualsiasi segmento contiguo: calcola quante volte deve essere azionata la macchina per ottenere la giusta quantità di radiazioni su ogni punto dell'osso. Dettagli L'osso da trattare è lungo N centimetri, numerati da 1 a N. Il centimetro i deve ricevere una quantità di radiazioni specificata da un numero naturale R. Il numero N ed i numeri R,..., R sono dati in input. La macchina viene azionata specificando due numeri interi positivi a e b, che indicano gli estremi del segmento di osso su cui la macchina opera (a b). Dopo tale azionamento, tutti i centimetri da a a b dell'osso accumulano 1 unità di radiazioni. Dopo aver azionato la macchina un certo numero di volte, la quantità di radiazioni ricevute sul centimetro i si può conoscere contando quante volte una radiazione ha operato su quella zona (ovvero, quante volte la macchina è stata azionata con valori tali per cui a i b). Calcola il numero minimo di volte in cui è necessario azionare la macchina affinché ciascuna zona i riceva esattamente la quantità di radiazioni richiesta R i. Assunzioni T = 19, ci sono 19 casi di prova. 1 N 1000, ovvero, l'osso è lungo al massimo 1000 centimetri. 0 R 1000, ogni centimetro può dover ricevere una quantità di radiazione fino a 1000. Dati di input La prima riga del file di input contiene un intero T, il numero di casi di test. Seguono T casi di test, numerati da 1 a T. Ogni caso di test è preceduto da una riga vuota. In ciascun caso di test, la prima riga contiene l'intero N. La seconda riga contiene gli N valori R,..., R, separati da spazio. Dati di output i i 1 N Il file di output deve contenere la risposta ai casi di test che sei riuscito a risolvere. Per ogni caso di test che hai risolto, il file di output deve contenere una riga con la dicitura 1 N

Case #t: p dove t è il numero del caso di test (a partire da 1) e p è è il minimo numero di volte in cui la macchina deve essere azionata. Esempi di input/output Input: Download 2 4 1 2 3 1 4 100 0 1 1 Output: Download Case #1: 3 Case #2: 101 Spiegazione Nel primo caso d'esempio, è possibile azionare la macchina ad esempio nel seguente modo: 1. segmento da a = 2 a b = 3 2. segmento da a = 1 a b = 4 3. segmento da a = 3 a b = 3 Graficamente:. x x. <-- azionamento 1 x x x x <-- azionamento 2.. x. <-- azionamento 3 ------- 1 2 3 1 <-- totale radiazione accumulata Non ci sono soluzioni con solo 2 azionamenti o meno, quindi la risposta corretta è 3. Nel secondo caso d'esempio, è possibile azionare la macchina ad esempio nel seguente modo: 1. segmento da a = 1 a b = 1 (ripeti 100 volte) 2. segmento da a = 3 a b = 4 Non ci sono soluzioni con solo 100 azionamenti o meno, quindi la risposta corretta è 101.

Escursione Mojito vuole pianificare un'escursione sulle colline di Volterra. Ha a disposizione una mappa rettangolare, in cui è indicata l'altitudine della zona. Mojito vuole fare un percorso che parte dall'angolo in alto a sinistra della mappa e raggiunge l'angolo in basso a destra, in modo tale che il dislivello massimo che è costretto a fare ad ogni spostamento sia il mimimo possibile. Aiuta Mojito a calcolare questo dislivello! Dettagli La mappa è una tabella di numeri interi: ciascuno esprime l'altitudine in metri nel corrispondente punto della mappa. La tabella è composta di H righe e W colonne, numerate rispettivamente da 1 a H e da 1 a W. Nella cella di coordinate (i, j), ovvero in corrispondenza della riga i e della colonna j, è indicato il valore dell'altitudine A. Mojito inizia l'escursione dalla cella di coordinate (1, 1), in alto a sinistra, ed arriva alla cella di coordinate (H, W ), in basso a destra. Ogni minuto si sposta di esattamente una cella, in una della quattro possibili direzioni (in alto, in basso, a destra o a sinistra). Non può però uscire dalla mappa. Stabilito un percorso lungo la mappa, il pericolo associato a quel percorso è il massimo dislivello tra due celle consecutive lungo il percorso, ovvero la differenza di altitudine fra due celle consecutive: non cambia nulla se lo spostamento è in salita o in discesa. Calcola il pericolo minimo, fra tutti i percorsi possibili che partono dalla cella (1, 1) e arrivano alla cella (H, W ). Assunzioni T = 27, ci sono 27 casi di prova. 1 H, W 100, la mappa ha dimensione massima 100 100. (1, 1) (H, W ), ovvero la mappa è abbastanza grande da avere partenza e arrivo in punti diversi. 1 A 1.000.000, l'altitudine in ogni cella è compresa fra 1 e 1.000.000. i,j Dati di input La prima riga del file di input contiene un intero T, il numero di casi di test. Seguono T casi di test, numerati da 1 a T. Ogni caso di test è preceduto da una riga vuota. In ciascun caso di test, la prima riga contiene due interi H e W separati da uno spazio che corrispondono all'altezza, H, e alla larghezza, W, della mappa. Le successive H righe contengono ciascuna W interi separati da spazi, corrispondenti all'altitudine in metri lungo una riga della mappa. Ovvero, in ciascun caso di test, l'altitudine A alle coordinate i e j appare sulla riga (i + 1)-esima, in posizione j. Dati di output i,j i,j

Il file di output deve contenere la risposta ai casi di test che sei riuscito a risolvere. Per ogni caso di test che hai risolto, il file di output deve contenere una riga con la dicitura Case #t: p dove t è il numero del caso di test (a partire da 1) e p è il minimo valore di pericolo trovato per quel test case. Esempi di input/output Input: Download 3 2 2 100 150 110 130 4 4 1 5 6 7 2 4 3 8 2 9 2 8 3 3 2 9 1 10 2 4 6 8 10 12 14 16 18 20 Output: Download Case #1: 20 Case #2: 1 Case #3: 2 Spiegazione Nel primo caso d'esempio, Mojito sceglie il percorso: 100 150 110 130 ovvero, con i seguenti spostamenti: in basso, da (1, 1) a (2, 1), con un dislivello pari a 110 100 = 10 a destra, da (2, 1) a (2, 2) = (H, W ), con un dislivello pari a 130 110 = 20. Il pericolo del percorso è 20 (il massimo fra i dislivelli, 10 e 20). Non ci sono percorsi migliori, quindi la risposta corretta è 20. L'altro percorso possibile è: 100 150 110 130 che ha dislivelli 50 e 20, e quindi ha pericolo 50. Nel secondo caso d'esempio, Mojito sceglie il percorso: 1 5 6 7 2 4 3 8 2 9 2 8 3 3 2 9 Gli spostamenti hanno tutti dislivello 0 o 1, quindi il pericolo del percorso è 1. Non ci sono percorsi di pericolo pari a 0, quindi la risposta corretta è 1.

Nel terzo caso d'esempio c'è un solo percorso possibile.