Wrong Answer
Ο Troy έφτιαξε το παρακάτω πρόβλημα (με τίτλο WA) για ένα διαγωνισμό προγραμματισμού:
Υπάρχει ένα παιχνίδι με επίπεδα αριθμημένα από το
έως το
.
Υπάρχουν δύο χαρακτήρες, και οι δύο είναι αρχικά στο επίπεδο
.
Για
, κοστίζει
νομίσματα για να κινηθεί ένας χαρακτήρας από το επίπεδο
στο επίπεδο
.
Δεν επιτρέπεται να μετακινήσουμε έναν χαρακτήρα από το επίπεδο
στο επίπεδο
αν
.
Για να κερδίσετε το παιχνίδι, κάθε επίπεδο (εκτός από το επίπεδο
) πρέπει να το έχει επισκεφθεί ακριβώς ένας χαραχτήρας.
Ποιός είναι ο ελάχιστος αριθμός νομισμάτων που χρειάζετε για να κερδίσετε;
Ο JP είναι ένας διαγωνιζόμενος και υπέβαλε την παρακάτω λύση σε Python.
def Solve(N, A):
# A[i][j] is cost of moving from level i to level j
# N is the number of levels
x, y, sx, sy = 1, 1, 0, 0 # Initialize x and y to 1, sx and sy to 0
for i in range(2, N + 1): #loop from 2 to N
if sx + A[x][i] < sy + A[y][i]:
sx += A[x][i]
x = i
else:
sy += A[y][i]
y = i
return sx + sy
Ο Troy είναι σίγουρος πως η λύση του JP είναι λάθος. Ας υποθέσουμε ότι για μια είσοδο στο WA, η λύση του JP επιστρέφει αλλά ο ελάχιστος αριθμός κερμάτων που χρειάζονται είναι
. Για να δείξετε πόσο λάθος είναι η λύση του JP, βοηθήστε τον Troy να βρει μία είσοδο
και
έτσι ώστε το
να μεγιστοποιείται.
Είσοδος
Δεν υπάρχει είσοδος
Έξοδος
Εκτυπώστε μία είσοδο στο WA με την ακόλουθη μορφή:
Στην πρώτη γραμμή, εκτυπώστε έναν ακέραιο (
).
Έπειτα εκτυπώστε
-
γραμμές και η
-οστη γραμμή θα πρέπει να περιέχει
-
ακέραιους
, ...,
(
).
Αν η έξοδός σας δεν είναι στη σωστή μορφή, θα θεωρηθεί λανθασμένη και θα λάβετε βαθμούς.
Αλλιώς, υποθέστε ότι για τη δική σας είσοδο, η λύση του JP επιστρέφει αλλά ο ελάχιστος αριθμός νομισμάτων που απαιτείται είναι
. Τότε θα λάβετε
min(
,
/
)
βαθμούς όπου
είναι ο μικρότερος ακέραιος που δεν είναι μεγαλύτερος του
.
Παράδειγμα
output
5
1 2 3 4
10 9 8
7 6
5
Επεξήγηση του παραδείγματος
Ο βέλτιστος τρόπος για να κερδίσετε το παιχνίδι είναι ο ένας χαρακτήρας να επισκεφθεί το επίπεδο και ο άλλος χαρακτήρας να επισκεφθεί τα επίπεδα
,
και
. Αυτό κοστίζει (
) + (
+
+
) =
νομίσματα. Η λύση του JP επιστρέφει
. Οπότε,
/
=
/(
x
) =
, άρα αυτή η έξοδος θα λάβει
=
βαθμό.
Comments