#1066
AI
Institutul Naţional de Robotică Avansată realizează o serie de teste ultimei generaţii de roboţi inteligenţi proiectaţi de specialiştii acestuia. Sistemul de testare se bazează pe o reţea de senzori formată din n
segmente egale dispuse orizontal şi n
segmente egale dispuse vertical. Distanţa între două segmente alăturate orizontale, respectiv verticale este de 1
metru. Fiecare segment orizontal este în contact cu fiecare segment vertical. Denumim nod un punct în care un segment orizontal şi unul vertical vin în contact. Segmentele sunt numerotate: cele orizontale de sus în jos începând de la 1
iar cele verticale de la stânga la dreapta începând de la 1
.
Un nod va fi identificat prin două numere: primul reprezintă numărul segmentului orizontal iar al doilea numărul segmentului vertical care vin în contact în respectivul nod.
Într-unul dintre nodurile reţelei se află o ţintă. În alte două noduri se află câte o sursă ce emite o rază laser. O astfel de sursă emite raza într-o singură direcţie. Raza laser are o grosime neglijabilă. Cele două surse sunt astfel orientate încât raza emisă de fiecare “loveşte” ţinta. Cele două noduri în care sunt plasate sursele sunt astfel alese încât cele două raze nu se intersectează decât în nodul unde se află ţinta.
În alte două noduri ale reţelei se află câte un robot. Fiecare robot se poate deplasa dintr-un nod în cele vecine (cele aflate sus, jos, în stânga şi în dreapta), dar fără să iasă din cadrul reţelei. Roboţii se deplasează cu 1
m/secundă.
Se efectuează experimente în care roboţii sunt programaţi să se deplaseze prin reţea cu scopul de a proteja ţinta faţă de cele două raze laser. Un robot poate proteja ţinta fie ocupând nodul unde se află sursa, fie ocupând un nod prin care trece raza laser în drumul de la sursă către ţintă (razele laser nu “ocolesc” roboţii). Dimensiunea roboţilor este atât de mică încât, în acest al doilea caz, ei protejează ţinta faţă de raza laser doar când nodurile unde sunt sursa, ţinta şi robotul sunt coliniare iar robotul este între sursă şi ţintă. În momentul în care un robot ajunge într-un nod unde protejează ţinta faţă de una dintre raze, el se poate opri sau poate să îşi continue deplasarea. Dacă îşi continuă deplasarea astfel încât noua poziţie ocupată de acel robot şi poziţiile ţintei şi sursei nu mai sunt coliniare, atunci acel robot nu mai protejează ţinta. Din modul în care sunt alese poziţiile nodurilor pentru ţintă şi sursele laser rezultă că nu există nicio poziţie în care un robot să protejeze simultan ţinta faţă de ambele raze.
Fiecare robot este dotat cu o reţea neuronală şi poate învăţa din experimentele anterioare pe unde să se deplaseze. Pentru a mări capacitatea de adaptare a roboţilor, în k
noduri ale reţelei sunt aşezate obstacole care fac ca roboţii să nu poată trece prin nodurile respective. Deoarece obstacolele folosite sunt transparente, razele laser pot trece prin acestea fără a le fi afectată intensitatea sau direcţia. Două sau mai multe obstacole dispuse pe acelaşi segment, în noduri alăturate, formează un zid. Lungimea unui zid este egală cu numărul de obstacole din care este alcătuit.
Cerințe:
1) Determinaţi lungimea maximă a unui zid.
2) Determinaţi numărul minim de secunde în care cei doi roboţi pot proteja ţinta faţă de cele două raze laser.
OJI 2011, Clasa a X-a
Problema | AI | Operații I/O |
ai.in /ai.out
|
---|---|---|---|
Limita timp | 1.5 secunde | Limita memorie |
Total: 20 MB
/
Stivă 8 MB
|
Id soluție | #22488709 | Utilizator | |
Fișier | ai.cpp | Dimensiune | 2.12 KB |
Data încărcării | 16 Aprilie 2020, 11:23 | Scor / rezultat | Eroare de compilare |
ai.cpp: In function 'void lee()': ai.cpp:56:1: error: expected primary-expression before '}' token } ^ ai.cpp:56:1: error: expected ';' before '}' token ai.cpp:48:9: warning: unused variable 'lv' [-Wunused-variable] int lv, cv, timp = 1, lin, col; ^ ai.cpp:48:13: warning: unused variable 'cv' [-Wunused-variable] int lv, cv, timp = 1, lin, col; ^ ai.cpp:48:17: warning: unused variable 'timp' [-Wunused-variable] int lv, cv, timp = 1, lin, col; ^ ai.cpp:48:27: warning: unused variable 'lin' [-Wunused-variable] int lv, cv, timp = 1, lin, col; ^ ai.cpp:48:32: warning: unused variable 'col' [-Wunused-variable] int lv, cv, timp = 1, lin, col; ^ ai.cpp: In function 'void solve()': ai.cpp:89:9: warning: unused variable 'i' [-Wunused-variable] int i, j; ^ ai.cpp:89:12: warning: unused variable 'j' [-Wunused-variable] int i, j; ^
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema AI face parte din prima categorie. Soluția propusă de tine va fi evaluată astfel:
Suma punctajelor acordate pe testele utilizate pentru verificare este 100. Astfel, soluția ta poate obține cel mult 100 de puncte, caz în care se poate considera corectă.