Bi-ing Lottery Treekets
Σε ένα παράλληλο σύμπαν, όλοι σκόραραν τέλεια στον CCO. Ως εκ τούτου, ο Troy πρέπει να διαλέξει τον νικητή μέσα από μια λοταρία. Κάθε διαγωνιζόμενος θα διαλέξει αριθμούς για να δημιουργήσει έναν λαχνό. Ένας λαχνός είναι ένας πίνακας (array) μεγέθους αριθμημένος από το έως το όπου κάθε καταχώριση στον πίνακα είναι ένας αριθμός από το έως το .
Ο νικητήριος λαχνός καθορίζεται πετώντας μπαλάκια (αριθμημένα από το έως το ) με τυχαία σειρά σε ένα δυαδικό δέντρο με ρίζα (rooted binary tree). Το δέντρο έχει κόμβους (αριθμημένους από το έως το ) και έχει ως ρίζα τον κόμβο .
Κάθε μπαλάκι έχει έναν καθορισμένο κόμβο ρίψης στον οποίο θα ριφθεί. Όταν ένα μπαλάκι ριφθεί σε έναν άδειο κόμβο ή εισέλθει σε έναν άδειο κόμβο, θα συμβεί ένα από τρία πράγματα:
. Εάν όλα από τα "παιδιά" του κόμβου είναι κατειλημμένα από μπαλάκια (ή αν ένας κόμβος δεν έχει "παιδιά"),
το τρέχον μπαλάκι μένει στον τρέχον κόμβο.
Δηλαδή, παραμένει εκεί και δεν μετακινείται ξανά.
. Εάν ο τρέχον κόμβος έχει μόνο ένα άδειο "παιδί", το τρέχον μπαλάκι θα μετακινηθεί σε εκείνο το "παιδί".
. Εάν ο τρέχον κόμβος έχει δύο άδεια "παιδιά" και αν το τρέχον μπαλάκι ρίφθηκε, θα μπορούσε να πάει είτε
αριστερά είτε δεξιά.
Ειδάλλως, θα συνεχίσει προς την κατεύθυνση της προηγούμενής του κίνησης.
Εάν δεν μπορούν να ριφθούν όλα τα μπαλάκια, δεν γίνεται να καθοριστεί ο νικητήριος λαχνός. Αυτό συμβαίνει όταν ένα μπαλάκι ριφθεί και ο κόμβος ρίψης του είναι κατηλλημένος από ένα άλλο μπαλάκι.
Εάν ριφθούν όλα τα μπαλάκια, οι θέσεις στις οποίες έχουν καταλήξει τα μπαλάκια καθορίζουν το νικητήριο λαχνό. Η -οστη καταχώριση του νικητήριου λαχνού είναι ο αριθμός από το μπαλάκι που βρίσκεται στον κόμβο ή στον κόμβο αν δεν υπάρχει κάποιο μπαλάκι στον κόμβο .
Ο Troy θα ήθελε να ξέρει τον αριθμό των πιθανών νικητήριων λαχνών (ο οποίος μπορεί να είναι και μηδέν).
Είσοδος
Η πρώτη γραμμή περιέχει δύο χωρισμένους με κενό ακέραιους αριθμούς και , που δηλώνουν τον αριθμό των κόμβων στο δυαδικό δέντρο και τον αριθμό από μπαλάκια, αντίστοιχα.
Η επόμενη γραμμή περιέχει χωρισμένους με κενό ακέραιους αριθμούς, όπου ο -στος ακέραιος δηλώνει τον καθορισμένο κόμβο ρίψης από το μπαλάκι με τον αριθμό .
Οι τελευταίες γραμμές περιέχουν η καθεμία δύο χωρισμένους με κενό ακέραιους αριθμούς. Η -οστη γραμμή περιέχει το και το που δηλώνουν το αριστερό και το δεξί "παιδί" του -οστου κόμβου αντίστοιχα, όπου σημαίνει ότι δεν υπάρχει τέτοιο "παιδί".
Βαθμολογία
Βαθμοί | Περιορισμοί στο | Περιορισμοί στο | Επιπλέον περιορισμοί |
3 | Κανένας | ||
4 | Όλοι οι κόμβοι δεν έχουν αριστερό "παιδί" | ||
9 | Οι κόμβοι ρίψης είναι μοναδικοί | ||
9 | Κανένας |
Έξοδος
Εκτυπώστε το υπόλοιπο της διαίρεσης του αριθμού των νικητήριων λαχνών με το .
Παραδείγματα
input
5 2
1 3
2 3
0 0
4 5
0 0
0 0
output
4
Επεξήγηση του 1ου παραδείγματος
Το δέντρο είναι έτσι:
Θεωρήστε ότι το μπαλάκι ρίχνεται πρώτο. Εάν το μπαλάκι πάει αριστερά, τότε θα καταλήξει στον κόμβο . Έπειτα, θα ριφθεί το μπαλάκι και μπορεί να καταλήξει στον κόμβο ή . Αν το μπαλάκι πάει δεξιά, θα καταλήξει στον κόμβο . Μετά, το μπαλάκι θα καταλήξει στον κόμβο .
Θεωρήστε ότι το μπαλάκι ρίχνεται πρώτο. Το μπαλάκι μπορεί να πάει αριστερά ή δεξιά και να καταλήξει στον κόμβο ή αντίστοιχα. Μετά, αν το μπαλάκι πάει αριστερά αφού ριφθεί, θα καταλήξει στον κόμβο . Ωστόσο, αν το μπαλάκι πάει δεξιά, θα καταλήξει στον κόμβο που δεν βρίσκεται το μπαλάκι , δηλαδή είτε στον κόμβο είτε στον κόμβο .
Οι πιθανοί νικητήριοι λαχνοί είναι , , και .
input
4 3
1 2 4
0 2
0 3
0 4
0 0
output
2
Επεξήγηση του 2ου παραδείγματος
Το δέντρο είναι έτσι:
Αυτό το παράδειγμα ικανοποιεί το δεύτερο υποπρόβλημα.
Το μπαλάκι πρέπει να ριφθεί πρώτο γιατί αν είτε το μπαλάκι είτε το μπαλάκι ριφθούν πριν από το μπαλάκι , θα κατέληγαν στον κόμβο και δεν θα επέτρεπαν στο μπαλάκι να ριφθεί.
Έτσι, μπορούμε είτε να ρίξουμε πρώτα το μπαλάκι , μετά το μπαλάκι και τέλος το μπαλάκι είτε να ρίξουμε πρώτα το μπαλάκι , μετά το μπαλάκι και τέλος το μπαλάκι .
Οι πιθανοί νικητήριοι λαχνοί είναι και [].
Επίσημοι Ορισμοί
Ένα δυαδικό δέντρο είναι ένα σύνολο από κόμβους που είναι είτε άδειοι, είτε ένας κόμβος-ρίζα με ένα αριστερό υπο-δέντρο και ένα δεξί υπο-δέντρο τα οποία είναι δυαδικά δέντρα. Δεδομένου ενός κόμβου , αν το αριστερό του υπο-δέντρο δεν είναι άδειο, τότε η ρίζα αυτού του υπο-δέντρου ονομάζεται ονομάζεται αριστερό "παιδί" του . Παρομοίως, δεδομένου ενός κόμβου , αν το δεξί του υπο-δέντρο δεν είναι άδειο, τότε η ρίζα αυτού του υπο-δέντρου ονομάζεται δεξί "παιδί" του .
Comments