Ραδιοφωνικοί Πύργοι
Υπάρχουν πύργοι ραδιοφώνου στην Τζακάρτα.
Οι πύργοι βρίσκονται κατά μήκος μιας ευθείας γραμμής και αριθμούνται από
έως
από αριστερά προς τα δεξιά.
Για κάθε
τέτοιο ώστε
, το ύψος του πύργου
είναι
μέτρα.
Τα ύψη των πύργων είναι μοναδικά.
Για κάποια θετική τιμή παρεμβολής , ένα ζεύγος πύργων
και
(όπου
) μπορούν να επικοινωνούν μεταξύ τους εάν και μόνο εάν υπάρχει ενδιάμεσος πύργος
, τέτοιος ώστε
- ο πύργος
βρίσκεται στα αριστερά του πύργου
και ο πύργος
βρίσκεται στα δεξιά του πύργου
, δηλαδή
, και
- τα ύψη του πύργου
και του πύργου
είναι και τα δύο το πολύ
μέτρα.
Ο Pak Dengklek θέλει να μισθώσει μερικούς ραδιοφωνικούς πύργους για το νέο του ραδιοφωνικό δίκτυο.
Ο στόχος σας είναι να απαντήσετε σε ερωτήσεις του Pak Dengklek που έχουν την ακόλουθη μορφή:
δίδονται οι παράμετροι
και
(
και
), ποιος είναι ο μέγιστος αριθμός πύργων που μπορεί να μισθώσει ο Pak Dengklek, υποθέτοντας ότι
- Ο Pak Dengklek μπορεί να μισθώσει μόνο πύργους με δείκτες μεταξύ
και
(συμπεριλαμβανομένων) και
- η τιμή παρεμβολής
είναι
και
- οποιοδήποτε ζευγάρι ραδιοφωνικών πύργων, που μισθώνει ο Pak Dengklek, πρέπει να μπορεί να επικοινωνεί ο ένας με τον άλλον.
Σημειώστε ότι δύο μισθωμένοι πύργοι μπορούν να επικοινωνούν χρησιμοποιώντας έναν ενδιάμεσο πύργο , ανεξάρτητα από το αν ο πύργος
είναι μισθωμένος ή όχι.
Λεπτομέρειες Υλοποίησης
Θα πρέπει να υλοποιήσετε τις ακόλουθες διαδικασίες:
void init(int N, int[] H)
: ο αριθμός των ραδιοφωνικών πύργων.
: ένας πίνακας μήκους
που περιγράφει τα ύψη των πύργων.
- Αυτή η διαδικασία καλείται ακριβώς μία φορά, πριν από οποιαδήποτε κλήση της «max_towers».
int max_towers(int L, int R, int D)
,
: τα όρια μιας σειράς πύργων.
: η τιμή του
.
- Αυτή η διαδικασία θα πρέπει να επιστρέψει τον μέγιστο αριθμό ραδιοφωνικών πύργων που μπορεί να μισθώσει ο Pak Dengklek για το νέο του ραδιοφωνικό δίκτυο, εάν του επιτρέπεται να μισθώνει πύργους μόνο μεταξύ του πύργου
και του πύργου
(συμπεριλαμβανομένων) και η τιμή του
είναι
.
- Αυτή η διαδικασία καλείται ακριβώς
φορές.
Παράδειγμα
Έστω ότι έχουμε τις ακόλουθες κλήσεις:
init(7, [10, 20, 60, 40, 50, 30, 70])
max_towers(1, 5, 10)
Ο Pak Dengklek μπορεί να μισθώσει τους πύργους ,
και
.
Το παράδειγμα απεικονίζεται στην παρακάτω εικόνα, όπου τα σκιασμένα σχήματα αντιπροσωπεύουν μισθωμένους πύργους.
Οι πύργοι και
μπορούν να επικοινωνήσουν χρησιμοποιώντας τον πύργο
ως ενδιάμεσο, αφού
και
.
Οι πύργοι
και
μπορούν να επικοινωνήσουν χρησιμοποιώντας τον πύργο
ως ενδιάμεσο.
Οι πύργοι
και
μπορούν να επικοινωνήσουν χρησιμοποιώντας τον πύργο
ως ενδιάμεσο.
Δεν υπάρχει τρόπος να μισθώσετε περισσότερους από
πύργους, επομένως η διαδικασία θα πρέπει να επιστρέψει
.
max_towers(2, 2, 100)
Υπάρχει μόνο πύργος στην περιοχή, επομένως ο Pak Dengklek μπορεί να μισθώσει μόνο
πύργο.
Επομένως, η διαδικασία θα πρέπει να επιστρέψει
.
max_towers(0, 6, 17)
Ο Pak Dengklek μπορεί να μισθώσει τους ραδιοφωνικούς πύργους και
.
Οι πύργοι
και
μπορούν να επικοινωνήσουν χρησιμοποιώντας τον πύργο
ως ενδιάμεσο, αφού
και
.
Δεν υπάρχει τρόπος να μισθώσετε περισσότερους από
πύργους, επομένως η διαδικασία θα πρέπει να επιστρέψει
.
Περιορισμοί
(για κάθε
τέτοιο ώστε
)
(για κάθε
και
τέτοια ώστε
)
Υποπροβλήματα
- (4 βαθμοί) Υπάρχει ένας πύργος
(
) όπου
- για κάθε
τέτοιο ώστε
:
, και
- για κάθε
τέτοιο ώστε
:
.
- για κάθε
- (11 βαθμοί)
,
- (12 βαθμοί)
- (14 βαθμοί)
- (17 βαθμοί)
,
- (19 βαθμοί) Η τιμή του
είναι η ίδια σε όλες τις κλήσεις της
max_towers
. - (23 βαθμοί) Κανένας επιπλέον περιορισμός.
Υπόδειγμα Βαθμολογητή
Ο βαθμολογητής διαβάζει την είσοδο στην ακόλουθη μορφή:
- γραμμή
:
- γραμμή
:
- γραμμή
(
) :
για την ερώτηση
Ο βαθμολογητής εκτυπώνει την απάντηση στην ακόλουθη μορφή:
- γραμμή
(
) : η επιστρεφόμενη τιμή της
max_towers
για την ερώτηση
Comments