Ιχθυοτροφείο Γατόψαρων
Η Bu Dengklek έχει ένα ιχθυοτροφείο με γατόψαρα. Το ιχθυοτροφείο της βρίσκεται σε μία λίμνη που αποτελείται από ένα πλέγμα κελιών. Κάθε κελί έχει σχήμα τετραγώνου με ίδιο μέγεθος. Οι στήλες του πλέγματος αριθμούνται από
έως
από δυτικά προς ανατολικά και οι σειρές αριθμούνται από
έως
από νότια προς βόρεια. Αναφερόμαστε στο κελί που βρίσκεται στη στήλη
και στη γραμμή
του πλέγματος (
,
) ως κελί
.
Στη λίμνη υπάρχουν γατόψαρα, αριθμημένα από
έως
, που βρίσκονται σε διαφορετικά κελιά. Για κάθε
, τέτοιο ώστε
, το γατόψαρο
βρίσκεται στο κελί
και ζυγίζει
γραμμάρια.
Η Bu Dengklek θέλει να κατασκευάσει μερικές προβλήτες για να πιάσει γατόψαρα.
Μια προβλήτα που βρίσκεται στη στήλη μήκους
(για οποιoδήποτε
και
) είναι ένα ορθογώνιο που επεκτείνεται από τη γραμμή
μέχρι και τη γραμμή
, καλύπτοντας τα κελιά
. Για κάθε στήλη, η Bu Dengklek μπορεί να επιλέξει, είτε να κατασκευάσει μια προβλήτα κάποιου μήκους της επιλογής του, είτε να μην κατασκευάσει προβλήτα.
Το γατόψαρο (για κάθε
τέτοιο ώστε
) μπορεί να αλιευθεί εάν υπάρχει προβλήτα ακριβώς στα δυτικά ή ανατολικά του και δεν υπάρχει προβλήτα που να καλύπτει το δικό του κελί. Δηλαδή, αν
- τουλάχιστον ένα από τα κελιά
ή
καλύπτεται από προβλήτα, και
- δεν υπάρχει προβλήτα που να καλύπτει το κελί
.
Για παράδειγμα, θεωρείστε μια λίμνη μεγέθους με
γατόψαρα:
- Το Γατόψαρο
βρίσκεται στο κελί
και ζυγίζει
γραμμάρια.
- Το Γατόψαρο
βρίσκεται στο κελί
και ζυγίζει
γραμμάρια.
- Το Γατόψαρο
βρίσκεται στο κελί
και ζυγίζει
γραμμάριο.
- Το Γατόψαρο
βρίσκεται στο κελί
και ζυγίζει
γραμμάρια.
Ένας τρόπος με τον οποίο η Bu Dengklek μπορεί να κατασκευάσει τις προβλήτες είναι ο εξής:
Ο αριθμός σε ένα κελί υποδηλώνει το βάρος του γατόψαρου που βρίσκεται στο κελί.
Τα σκιασμένα κελιά καλύπτονται από προβλήτες.
Σε αυτήν την περίπτωση, το γατόψαρο (στο κελί
) και το γατόψαρο
(στο κελί
) μπορούν να αλιευθούν. Το γατόψαρο
(στο κελί
) δεν μπορεί να αλιευθεί, καθώς υπάρχει μια προβλήτα που καλύπτει τη θέση του, ενώ το γατόψαρο
(στο κελί
) δεν μπορεί να αλιευθεί καθώς δεν υπάρχει προβλήτα ακριβώς στα δυτικά ή ανατολικά του.
Η Bu Dengklek θα ήθελε να χτίσει προβλήτες έτσι ώστε το συνολικό βάρος των γατόψαρων που μπορεί να πιάσει να είναι όσο το δυνατόν μεγαλύτερο. Ο στόχος σας είναι να βρείτε το μέγιστο συνολικό βάρος γατόψαρων που μπορεί να πιάσει η Bu Dengklek αφού κατασκευάσει τις προβλήτες.
Λεπτομέρειες Υλοποίησης
Θα πρέπει να υλοποιήσετε την ακόλουθη διαδικασία:
int64 max_weights(int N, int M, int[] X, int[] Y, int[] W)
: το μέγεθος της λίμνης.
: ο αριθμός των γατόψαρων.
,
: πίνακες μήκους
που περιγράφουν τις θέσεις των γατόψαρων.
: πίνακας μήκους
που περιγράφει τα βάρη των γατόψαρων.
- Αυτή η διαδικασία πρέπει να επιστρέφει έναν ακέραιο αριθμό που αντιπροσωπεύει το μέγιστο συνολικό βάρος γατόψαρων που μπορεί να πιάσει η Bu Dengklek μετά που θα κατασκευάσει τις προβλήτες.
- Αυτή η διαδικασία καλείται ακριβώς μία φορά.
Παράδειγμα
Θεωρείστε την ακόλουθη κλήση:
max_weights(5, 4, [0, 1, 4, 3], [2, 1, 4, 3], [5, 2, 1, 3])
Αυτό το παράδειγμα απεικονίζεται παραπάνω, στην περιγραφή του προβλήματος.
Αφού κατασκευάσει τις προβλήτες όπως περιγράφεται, η Bu Dengklek μπορεί να πιάσει τα γατόψαρα και
, των οποίων το συνολικό βάρος είναι
γραμμάρια.
Καθώς δεν υπάρχει τρόπος να κατασκευαστούν προβλήτες για να αλιευθούν γατόψαρα με συνολικό βάρος μεγαλύτερο των
γραμμάριων, η διαδικασία πρέπει να επιστρέψει
.
Περιορισμοί
,
(για κάθε
τέτοιο ώστε
)
(για κάθε $i$ τέτοιο ώστε
)
- Δεν υπάρχουν δύο γατόψαρα που να μοιράζονται το ίδιο κελί. Δηλαδή,
ή
(για κάθε
και
τέτοια ώστε
).
Υποπροβλήματα
- (3 βαθμοί) Το
είναι άρτιος (για κάθε
τέτοιο ώστε
)
- (6 βαθμοί)
(για κάθε
τέτοιο ώστε
)
- (9 βαθμοί)
(για κάθε $i$ τέτοιο ώστε
)
- (14 βαθμοί)
,
(για κάθε
τέτοιο ώστε
)
- (21 βαθμοί)
- (17 βαθμοί)
- (14 βαθμοί) Υπάρχουν το πολύ
γατόψαρα σε κάθε στήλη.
- (16 βαθμοί) Κανένας επιπλέον περιορισμός.
Υπόδειγμα βαθμολογητή
Ο βαθμολογητής διαβάζει την είσοδο στην ακόλουθη μορφή:
- γραμμή
:
- γραμμή
(
):
Ο βαθμολογητής εκτυπώνει την απάντησή στην ακόλουθη μορφή:
- γραμμή
: η επιστρεφόμενη τιμή της
max_weights
Comments