Friend - IOI 2014

publicité
InternationalOlympiadinInformatics2014
13-20thJuly2014
Taipei,Taiwan
friend
Day-2tasks
Language:fr-BE
Friend
Onconstruitunréseausocialde membresnumérotés0,...,
.Certainespairesdemembresdu
réseauserontamis.Silemembre devientamiaveclemembre ,alorslemembre estégalement
amiaveclemembre .
Lesmembressontajoutésauréseauen étapesquisontégalementnumérotéesde à
.Le
membre estajoutéàl'étape .Àl'étape0,lemembre0estajoutécommeuniquemembreduréseau.
Danschacunedes
étapessuivantes,unmembreestajoutéauréseauparunhôtequipeutêtre
n'importequellepersonnedéjàmembreduréseau.Àl'étape (
),l'hôtedecetteétapepeut
ajouterlemembre auréseauensuivantl'undesprotocolessuivants:
JeSuisTonAmi(IAmYourFriend):faitdel'hôtel'uniqueamidumembre .
MesAmisSontTesAmis(MyFriendsAreYourFriends):faitdumembre l'amidechaqueami
del'hôteaumomentdelarequête.Notezqueceprotocolnerendpascemembre amide
l'hôte.
NousSommesTesAmis(WeAreYourFriends):faitdumembre l'amidel'hôteainsiquede
chaqueamidel'hôteaumomentdelarequête.
Aprèsavoirconstruitleréseau,onaimeraitpouvoirsélectionnerunéchantillonreprésentatifde
personnespourunsondage,c'est-à-direuncertaingroupedemembresduréseau.Vuquedesamis
ontsouventlesmêmescentresd'intérêt,l'échantillonnedoitpasincluredepairedemembresquisont
amisl'undel'autre.Chaquemembreaunniveaudefiabilité(confidence)pourlesondage,exprimé
parunentierstrictementpositif.Onaimeraittrouverl'échantillondemembresquimaximiselafiabilité
totale.
Exemple
étape
1
2
3
4
5
hôte
0
0
1
2
0
protocole
JeSuisTonAmi
MesAmisSontTesAmis
NousSommesTesAmis
MesAmisSontTesAmis
JeSuisTonAmi
amitiésajoutés
(1,0)
(2,1)
(3,1),(3,0),(3,2)
(4,1),(4,3)
(5,0)
Initialement,leréseaunecontientquelemembre0.L'hôtedel'étape1(lemembre0)invitele
nouveaumembre1vialeprotocoleJeSuisTonAmi,ilsdeviennentdoncamis.L'hôtedel'étape2(le
membre0denouveau)invitelemembre2vialeprotocoleMesAmisSontTesAmis,quifaitdumembre
1(l'uniqueamidel'hôte)l'ami(leseul)dumembre2.L'hôtedel'étape3(lemembre1)ajoutele
membre3vialeprotocoleNousSommesTesAmis,quifaitdumembre3l'amidumembre1(l'hôte)et
desmembres0et2(amisdel'hôte).Lesétapes4et5sontégalementdonnéesdanslatableci-dessus.
1/3
Leréseaufinalestreprésentédansleschémasuivantdanslequellesnombresàl'intérieurdescercles
indiquentlenumérodumembreetlesnombresàcôtédescerclesindiquentleniveaudefiabilité.
L'échantilloncomposédesmembres3et5aunniveautotaldefiabilitéégalà20+15=35,quiestle
niveautotaldefiabilitémaximalqu'ilestpossibled'atteindre.
Tâche
Étantdonnésladescriptiondechaqueétapeetleniveaudefiabilitédechaquemembre,trouver
l'échantillonavecleniveautotaldefiabilitémaximal.Vousdevezuniquementimplémenterlafonction
findSample.
findSample(n,confidence,host,protocol)
n:lenombredemembres.
confidence:untableaudetaille ;confidence[i]indiquelafiabilitédumembre .
host:tableaudetaille ;host[i]indiquel'hôtedel'étape .
protocol:tableaudetaille ;protocol[i]indiquelecodeduprotocoleutilisépour
l'étape (
):0pourJeSuisTonAmi,1pourMesAmisSontTesAmis,et2pour
NousSommesTesAmis.
Vuqu'iln'yapasd'hôteàl'étape0,host[0]etprotocol[0]sontindéfinisetne
doiventpasêtreutilisésparvotreprogramme.
Lafonctiondoitretournerleniveautotaldefiabilitémaximalpossible.
Sous-tâches
Certainessous-tâchesutilisentunsous-ensembledesprotocoles,commedéfinici-dessous.
soustâche
points
fiabilité
1
11
é
2
8
é
3
8
é
4
19
é
5
23
Touteslesfiabilités
valent1
protocolesutilisés
Les3protocoles
Uniquement
MesAmisSontTesAmis
Uniquement
NousSommesTesAmis
UniquementJeSuisTonAmi
MesAmisSontTesAmiset
JeSuisTonAmi
2/3
soustâche
6
points
31
fiabilité
é
protocolesutilisés
Les3protocoles
Implémentation
Vousdevezsoumettreunseulfichier,appeléfriend.c,friend.cppoufriend.pas.Cefichier
doitimplémenterlafonctiondécriteprécédemment,enrespectantlessignaturessuivantes.Vousdevez
inclure(#include)l'en-têtefriend.hpourl'implémentationC/C++.
ProgrammeC/C++
intfindSample(intn,intconfidence[],inthost[],intprotocol[]);
ProgrammePascal
functionfindSample(n:longint,confidence:arrayoflongint,host:array
oflongint;protocol:arrayoflongint):longint;
Évaluateur
L'évaluateurfournilitl'entréedansleformatsuivant:
ligne1:n
ligne2:confidence[0],...,confidence[n-1]
ligne3:host[1],protocol[1],host[2],protocol[2],...,host[n-1],protocol[n-1]
L'évaluateurafficheralavaleurretournéeparfindSample.
3/3
Téléchargement