Hellenico

Συζητήσεις για προετοιμασία για τον διαγωνισμό, online διαγωνισμούς, βιβλία προγραμματισμού και αλγορίθμων, και όλων των σχετικών.
Άβαταρ μέλους
Κηπουρίδης
Δημοσιεύσεις: 397
Εγγραφή: Παρ Φεβ 05, 2010 5:05 pm

Re: Hellenico

Δημοσίευση από Κηπουρίδης »

Ωπ, δοκίμασα τώρα κι εγώ, και είναι μόνιμα σε κατάσταση αναμονής. Και σε εσένα το ίδιο συμβαίνει; Θα προσπαθήσω να ενημερώσω.
Λύσεις θεμάτων ΠΔΠ: https://pdp-archive.github.io/
Μπούσουλας διαβάσματος ΠΔΠ: http://snf-800715.vm.okeanos.grnet.gr/PDP/
Tutorials: https://kallinikos.github.io/
Επίσημο forum ΠΔΠ: https://www.pdpforum.eu.org/forum/
Marilenatsiop
Δημοσιεύσεις: 27
Εγγραφή: Παρ Ιουν 12, 2020 10:04 am

Re: Hellenico

Δημοσίευση από Marilenatsiop »

Ναι! Ακριβώς! Κάνω υποβολή και ποτέ δεν παίρνω απάντηση....., από το απόγευμα του Σαββάτου γίνεται αυτό.... δοκίμασα και σε άλλα προβλήματα και πάλι το ίδιο....
Άβαταρ μέλους
Κηπουρίδης
Δημοσιεύσεις: 397
Εγγραφή: Παρ Φεβ 05, 2010 5:05 pm

Re: Hellenico

Δημοσίευση από Κηπουρίδης »

Παράνοια που απαντάτε από διαφορετικό λογαριασμό, χιχιχι.
Πρέπει να λύθηκε τώρα το πρόβλημα, καλή συνέχεια!
Λύσεις θεμάτων ΠΔΠ: https://pdp-archive.github.io/
Μπούσουλας διαβάσματος ΠΔΠ: http://snf-800715.vm.okeanos.grnet.gr/PDP/
Tutorials: https://kallinikos.github.io/
Επίσημο forum ΠΔΠ: https://www.pdpforum.eu.org/forum/
Marilenatsiop
Δημοσιεύσεις: 27
Εγγραφή: Παρ Ιουν 12, 2020 10:04 am

Re: Hellenico

Δημοσίευση από Marilenatsiop »

τώρα δουλεύει , ευχαριστώ
Marilenatsiop
Δημοσιεύσεις: 27
Εγγραφή: Παρ Ιουν 12, 2020 10:04 am

Re: Hellenico

Δημοσίευση από Marilenatsiop »

Κηπουρίδης έγραψε: Τρί Νοέμ 10, 2020 5:14 pm Παράνοια που απαντάτε από διαφορετικό λογαριασμό, χιχιχι.
στο ίδιο σπίτι, διαφορετικός χρήστης συνδεδεμένος σε κάθε ... τερματικό: λαπτοπ, ντεσκτοπ, κινητό.... :D :D :D
bettypan
Δημοσιεύσεις: 14
Εγγραφή: Σάβ Ιούλ 25, 2020 12:44 pm

Re: Hellenico

Δημοσίευση από bettypan »

Η Μαριλένα «χάκαρε» τον λογαριασμό μου..... μπήκε από τον δικό μου...( μάλλον δεν κατάλαβε ότι ήμουν εγώ συνδεδεμένη ) και μετά συνέχισε από το δικό της.....
Συγγνώμη...!
( η Μπεττυ είμαι ;) )
Marilenatsiop
Δημοσιεύσεις: 27
Εγγραφή: Παρ Ιουν 12, 2020 10:04 am

Re: Hellenico

Δημοσίευση από Marilenatsiop »

χρειάζομαι βοήθεια στο πρόβλημα 3.1.2 (Ταξινόμηση σειράς δεδομένων με τρία κλειδιά)
ο κώδικάς μου περνάει 4/10 testcases...
καταμετρώ τις ανταλλαγες του 1-2 , 1-3 , 2-1 , 2-3 , 3-1 , 3-2 και μετά υπολογίζω το αθροισμα των ελάχιστων ανταλλαγών, όμως μάλλον υπολογίζω κάποια περισσότερες φορές από ότι έπρεπε .....
Spoiler: show

Κώδικας: Επιλογή όλων

#include <bits/stdc++.h>  
using namespace std;  
  
int main() {  
 freopen("sort3.in", "r", stdin);  
 freopen("sort3.out", "w", stdout);  
    int n;  
    cin>>n;  
    int starter[n];  
    for(int i=0; i<n; i++){  
        cin>>starter[i];  
    }  
    int count[4];  
    for(int i=0; i<4; i++){  
        count[i]=0;  
    }  
    for(int i=0; i<n; i++){  
        count[starter[i]]++;  
    }  
    int ant12=0, ant13=0, ant21=0, ant23=0, ant31=0, ant32=0;  
    for(int i=0; i<count[1]; i++){  
        if(starter[i]==2){  
            ant12++;  
        }else if(starter[i]==3){  
            ant13++;  
        }  
    }  
    for(int i=count[1]; i<count[1]+count[2]; i++){  
        if(starter[i]==1){  
            ant21++;  
        }else if(starter[i]==3){  
            ant23++;  
        }  
    }  
    for(int i=count[1]+count[2]; i<count[1]+count[2]+count[3]; i++){  
        if(starter[i]==1){  
            ant31++;  
        }else if(starter[i]==2){  
            ant32++;  
        }  
    }  
   int  ans=min(ant12,ant21)+min(ant13,ant31)+min(ant23,ant32);   
   cout<< ans;  
      
    return 0;  
}
Άβαταρ μέλους
Κηπουρίδης
Δημοσιεύσεις: 397
Εγγραφή: Παρ Φεβ 05, 2010 5:05 pm

Re: Hellenico

Δημοσίευση από Κηπουρίδης »

Συμφωνώ ότι η πληροφορία που υπολογίζεις (αυτές οι 6 μεταβλητές) αρκεί για να υπολογιστεί η τελική απάντηση. Θες να μας πεις όμως πώς χρησιμοποιείς αυτές τις έξι μεταβλητές (ανταλλαγές12, ανταλλαγές13, ανταλλαγές21, ανταλλαγές23, ανταλλαγές31, ανταλλαγές32) ώστε να υπολογίσεις την τελική απάντηση;
Ίσως έτσι μπορέσουμε να σου δώσουμε κάποιο αντιπαράδειγμα όπου η λογική σου να μην το λύνει.
Λύσεις θεμάτων ΠΔΠ: https://pdp-archive.github.io/
Μπούσουλας διαβάσματος ΠΔΠ: http://snf-800715.vm.okeanos.grnet.gr/PDP/
Tutorials: https://kallinikos.github.io/
Επίσημο forum ΠΔΠ: https://www.pdpforum.eu.org/forum/
Marilenatsiop
Δημοσιεύσεις: 27
Εγγραφή: Παρ Ιουν 12, 2020 10:04 am

Re: Hellenico

Δημοσίευση από Marilenatsiop »

οι ανταλλαγές 1-2, 2-1 είναι το ίδιο πραγμα, οπότε παίρνω την μικρότερη απο αυτές τις δυο.
οι ανταλλαγές 1-3 και 3-1 είναι επίσης το ίδιο, παίρνω την μικρότερη τιμή,
οι ανταλλαγές 2-3 και 3-2, επισης, παίρνω την μικρότερη και ,
τέλος, προσθέτω αυτές τις τρεις τιμές.
Άβαταρ μέλους
Κηπουρίδης
Δημοσιεύσεις: 397
Εγγραφή: Παρ Φεβ 05, 2010 5:05 pm

Re: Hellenico

Δημοσίευση από Κηπουρίδης »

Είσαι σίγουρη ότι οι μεταβλητές αυτές είναι ίσες; Στο παρακάτω παράδειγμα πχ δε μου φαίνονται ίσες.
1 2 3 3 3 1

Παρεμπιπτόντως η απάντησή θα έπρεπε να είναι 2 (ένα flip ο τελευταίος άσσος με το δυάρι, και κατόπιν άλλο ένα flip το δυάρι με το πρώτο τριάρι). Το πρόγραμμά σου δίνει 0.

Ελπίζω να σε βοηθήσει το αντιπαράδειγμα να σκεφτείς τι πάει στραβά στη λύση σου και πώς θα τη βελτιώσεις.

Σημείωση: Όλοι όσοι ξέρω, συμπεριλαμβανομένου εμού, συναντήσαμε δυσκολία στο εν λόγω πρόβλημα. Μοιάζει τόσο απλό που σε παρασύρει να κάνεις μια πολύ απλή λύση. Δεν είναι όμως τόοοσο απλό (χωρίς να σημαίνει ότι είναι και τραγικά δύσκολο, αλλά τη θέλει τη δουλίτσα του).

Καλή συνέχεια!
Λύσεις θεμάτων ΠΔΠ: https://pdp-archive.github.io/
Μπούσουλας διαβάσματος ΠΔΠ: http://snf-800715.vm.okeanos.grnet.gr/PDP/
Tutorials: https://kallinikos.github.io/
Επίσημο forum ΠΔΠ: https://www.pdpforum.eu.org/forum/
Marilenatsiop
Δημοσιεύσεις: 27
Εγγραφή: Παρ Ιουν 12, 2020 10:04 am

Re: Hellenico

Δημοσίευση από Marilenatsiop »

οκ με το παράδειγμα που μου δώσατε το κατάλαβα , σε συνδυασμό με αυτό που μου είχε εξηγήσει στο παρελθόν και ο κύριος Μποκής...
η λύση μου θα είναι
Spoiler: show

Κώδικας: Επιλογή όλων

int  ans=min(ant12,ant21)+min(ant13,ant31)+min(ant23,ant32)+2*(max(ant13,ant31)-min(ant13,ant31)); 
είτε

Κώδικας: Επιλογή όλων

int  ans=min(ant12,ant21)+min(ant13,ant31)+min(ant23,ant32)+2*(max(ant12,ant21)-min(ant12,ant21));
είτε

Κώδικας: Επιλογή όλων

int  ans=min(ant12,ant21)+min(ant13,ant31)+min(ant23,ant32)+2*(max(ant23,ant32)-min(ant23,ant32));   
Marilenatsiop
Δημοσιεύσεις: 27
Εγγραφή: Παρ Ιουν 12, 2020 10:04 am

Re: Hellenico

Δημοσίευση από Marilenatsiop »

Χρόνια πολλά και καλές γιορτές...!!!
Κόλλησε πάλι το hellenico :roll:
Άβαταρ μέλους
Κηπουρίδης
Δημοσιεύσεις: 397
Εγγραφή: Παρ Φεβ 05, 2010 5:05 pm

Re: Hellenico

Δημοσίευση από Κηπουρίδης »

Ενημέρωσα και πρέπει αν λύθηκε, σε ευχαριστούμε για την ενημέρώση!
Λύσεις θεμάτων ΠΔΠ: https://pdp-archive.github.io/
Μπούσουλας διαβάσματος ΠΔΠ: http://snf-800715.vm.okeanos.grnet.gr/PDP/
Tutorials: https://kallinikos.github.io/
Επίσημο forum ΠΔΠ: https://www.pdpforum.eu.org/forum/
Marilenatsiop
Δημοσιεύσεις: 27
Εγγραφή: Παρ Ιουν 12, 2020 10:04 am

Re: Hellenico

Δημοσίευση από Marilenatsiop »

Ευχαριστώ πολύ!!! ευτυχώς πρόλαβα να κάνω, ένα πρόβλημα, υποβολή το πρωι...
ξανακόλλησε :P :roll: :lol:
Άβαταρ μέλους
Κηπουρίδης
Δημοσιεύσεις: 397
Εγγραφή: Παρ Φεβ 05, 2010 5:05 pm

Re: Hellenico

Δημοσίευση από Κηπουρίδης »

Fixed!
Λύσεις θεμάτων ΠΔΠ: https://pdp-archive.github.io/
Μπούσουλας διαβάσματος ΠΔΠ: http://snf-800715.vm.okeanos.grnet.gr/PDP/
Tutorials: https://kallinikos.github.io/
Επίσημο forum ΠΔΠ: https://www.pdpforum.eu.org/forum/
Prod55
Δημοσιεύσεις: 5
Εγγραφή: Πέμ Ιαν 20, 2022 10:47 am

Re: Hellenico

Δημοσίευση από Prod55 »

Καλησπέρα

Δεν ασχολούμαι πολύ καιρό με προγραμματισμό, κοίταξα λίγο το πρόβλημα με το bandwidth (με την λήψη αρχείων), έγραψα τον παρακάτω κώδικα αλλά περνάω μόνο το 1ο test case, στα υπόλοιπα λέει "λάθος απάντηση".

Κώδικας: Επιλογή όλων

 Program downloads;

var
eisodos: text;
velos: array[1..100] of longint;
remain: array[1..100] of longint;
N,i,A,B,R: integer;
C,j: real;

begin
assign(eisodos,'downloads.in');
reset(eisodos);
readln(eisodos,N);
for i:=1 to N do 
readln(eisodos,velos[i],remain[i]);
close(eisodos);
A:=0;
For i:=1 to N do
A:=A+velos[i]*remain[i];
B:=0;
For i:=1 to N do 
B:=B+velos[i];
C:=A/B;
i:=0;
while i<C do 
i:=i+1;
j:=i-C;
if j>0.5 then 
R:=i-1
else
R:=i;
assign(eisodos,'downloads.out');
rewrite(eisodos);
writeln(eisodos,R);
close(eisodos);
end.
  
Ουσιαστικά διαιρώ το άθροισμα όλων των αρχικών γινομένων ταχύτητα*υπολοιπόμενος χρόνος με το άθροισμα των ταχυτήτων(το οποίο μένει σταθερό). Έπειτα στρογυλλοποιώ στον πλησιέστερο ακέραιο. Το ότι το αποτέλεσμα προκύπτει όντως με την παραπάνω διαδικασία το έχω αποδείξει με επαγωγή στο Ν, οπότε υποθέτω πως το πρόβλημα είναι αλλού. Μπορεί κάποιος να μου υποδείξει το σφάλμα στον κώδικά μου?
Άβαταρ μέλους
switch
Δημοσιεύσεις: 90
Εγγραφή: Σάβ Δεκ 05, 2015 11:46 am
Τοποθεσία: 127.0.0.1

Re: Hellenico

Δημοσίευση από switch »

Το κομμάτι

Κώδικας: Επιλογή όλων

i:=0;
while i<C do 
i:=i+1;
j:=i-C;
if j>0.5 then 
R:=i-1
else
R:=i;
το κάνεις για την στρογγυλοποίηση;
Αν κάνεις

Κώδικας: Επιλογή όλων

uses math;
μπορείς να χρησιμοποιήσεις τη συνάρτηση

Κώδικας: Επιλογή όλων

ceil(float x):integer;
ή

Κώδικας: Επιλογή όλων

writeln(C+0.5:9:0);
ή

Κώδικας: Επιλογή όλων

writeln(round(C+0.5));

υγ. Η pascal μου είναι λίγο ... rusty
Άβαταρ μέλους
Κηπουρίδης
Δημοσιεύσεις: 397
Εγγραφή: Παρ Φεβ 05, 2010 5:05 pm

Re: Hellenico

Δημοσίευση από Κηπουρίδης »

Μια μικρή παρατήρηση κι από εμένα (ίσως βέβαια και να μην καταλαβαίνω τον κώδικα επειδή δεν ξέρω Pascal...).

Ας πούμε ότι C=3.6
Αν καταλαβαίνω καλά ανεβάζεις την μεταβλητή i όσο είναι μικρότερη από C. Δηλαδή παίρνει τις τιμές 1, 2, 3, 4. Μετά κάνεις j=i-C=0.6, δηλαδή το j είναι το κλασματικό μέρος.
Και μετά λες ότι αν το κλασματικό μέρος είναι > 0.5, πρέπει R=i-1, ενώ αλλιώς R=i. Στην περίπτωσή μας θα γινόταν R=3. Μήπως κάνεις ανάποδα τον έλεγχο, και θα έπρεπε να είναι if j < 0.5;

Επίσης πρόσεξε ότι όταν το j είναι ακριβώς 0 τότε δεν θέλουμε R=i-1...

Αφήνω πάνω σου τις λεπτομέρειες διόρθωσης του κώδικα, κι αν κολλήσεις μας ξαναρωτάς. Προτείνω να τον επιδιορθώσεις μόνος με βάση τις παρατηρήσεις μου. Και κατόπιν να χρησιμοποιείς πάντα τις έτοιμες συναρτήσεις που πρότεινε ο switch: Αφού φαίνεται ότι είσαι δυνατός στα μαθηματικά, κάνε τη ζωή σου εύκολη με τον κώδικα ώστε να μπορείς να επικεντρωθείς στο δημιουργικό κομμάτι κι όχι στις λεπτομέρειες!

Καλή σου συνέχεια.

Υ.Γ.: Συγχαρητήρια για την λύση σου, είναι όμορφο που πρόσεξες ότι ανεξάρτητα απ' τη σειρά, ο τελικός χρόνος θα είναι
συνολικό_μέγεθος / συνολική_ταχύτητα = άθροισμα(ταχύτητα(i)*χρόνος_που_απομένει(i))/ άθροισμα(ταχύτητα(i))

Νομίζω ότι οι περισσότεροι (εμού συμπεριλαμβανομένου) προσπαθήσαμε να προσομοιώσουμε τη διαδικασία και μόλις τελειώνει κάποιο "κατέβασμα" να δίνουμε την ταχύτητά του σε κάποιο άλλο". Σωστό κι αυτό, αλλά λιγότερο διεισδυτικό (και εν τέλει βραδύτερο) απ' τη δική σου προσέγγιση.
Λύσεις θεμάτων ΠΔΠ: https://pdp-archive.github.io/
Μπούσουλας διαβάσματος ΠΔΠ: http://snf-800715.vm.okeanos.grnet.gr/PDP/
Tutorials: https://kallinikos.github.io/
Επίσημο forum ΠΔΠ: https://www.pdpforum.eu.org/forum/
Prod55
Δημοσιεύσεις: 5
Εγγραφή: Πέμ Ιαν 20, 2022 10:47 am

Re: Hellenico

Δημοσίευση από Prod55 »

Κηπουρίδης έγραψε: Παρ Ιαν 21, 2022 12:28 pm Μια μικρή παρατήρηση κι από εμένα (ίσως βέβαια και να μην καταλαβαίνω τον κώδικα επειδή δεν ξέρω Pascal...).

Ας πούμε ότι C=3.6
Αν καταλαβαίνω καλά ανεβάζεις την μεταβλητή i όσο είναι μικρότερη από C. Δηλαδή παίρνει τις τιμές 1, 2, 3, 4. Μετά κάνεις j=i-C=0.6, δηλαδή το j είναι το κλασματικό μέρος.
Και μετά λες ότι αν το κλασματικό μέρος είναι > 0.5, πρέπει R=i-1, ενώ αλλιώς R=i. Στην περίπτωσή μας θα γινόταν R=3. Μήπως κάνεις ανάποδα τον έλεγχο, και θα έπρεπε να είναι if j < 0.5;

Επίσης πρόσεξε ότι όταν το j είναι ακριβώς 0 τότε δεν θέλουμε R=i-1...

Αφήνω πάνω σου τις λεπτομέρειες διόρθωσης του κώδικα, κι αν κολλήσεις μας ξαναρωτάς. Προτείνω να τον επιδιορθώσεις μόνος με βάση τις παρατηρήσεις μου. Και κατόπιν να χρησιμοποιείς πάντα τις έτοιμες συναρτήσεις που πρότεινε ο switch: Αφού φαίνεται ότι είσαι δυνατός στα μαθηματικά, κάνε τη ζωή σου εύκολη με τον κώδικα ώστε να μπορείς να επικεντρωθείς στο δημιουργικό κομμάτι κι όχι στις λεπτομέρειες!

Καλή σου συνέχεια.

Υ.Γ.: Συγχαρητήρια για την λύση σου, είναι όμορφο που πρόσεξες ότι ανεξάρτητα απ' τη σειρά, ο τελικός χρόνος θα είναι
συνολικό_μέγεθος / συνολική_ταχύτητα = άθροισμα(ταχύτητα(i)*χρόνος_που_απομένει(i))/ άθροισμα(ταχύτητα(i))

Νομίζω ότι οι περισσότεροι (εμού συμπεριλαμβανομένου) προσπαθήσαμε να προσομοιώσουμε τη διαδικασία και μόλις τελειώνει κάποιο "κατέβασμα" να δίνουμε την ταχύτητά του σε κάποιο άλλο". Σωστό κι αυτό, αλλά λιγότερο διεισδυτικό (και εν τέλει βραδύτερο) απ' τη δική σου προσέγγιση.
Σας ευχαριστώ για την απάντηση,

το j δεν είναι ακριβώς το κλασματικό μέρος, είναι το 1-κλασματικό μέρος . Στο παράδειγμα που δίνεται μάλιστα είναι j=i-c=4-3,6=0,4 και όχι j=0,6 οπότε θα γίνει R=i=4 που είναι και το σωστό.
Τον αλγόριθμο για το R τον έτρεξα αυτόνομα και δουλεύει σε όλες τις περιπτώσεις κλασματικού μέρους, π.χ για C=2, C=2,3 ή C=5,5 και C=6,9.
Δεν γνώριζα πως η pascal υποστηρίζει συναρτήσεις τύπου floor,ceil. Θα κάτσω να ψάξω για αυτά γιατί στην τελική όντως γλιτώνουν χρόνο.
Συνεπώς υποθέτω πως το πρόγραμμά μου μπάζει από κάπου αλλού...
Άβαταρ μέλους
Κηπουρίδης
Δημοσιεύσεις: 397
Εγγραφή: Παρ Φεβ 05, 2010 5:05 pm

Re: Hellenico

Δημοσίευση από Κηπουρίδης »

Ωχ, δίκιο έχεις, με συγχωρείς για το λάθος!
Δεν βλέπω τότε τι μπορεί να πάει λάθος, και δυστυχώς δεν έγραψα και ποτέ μου Πασκάλ. Αν το βρεις πριν από εμάς, ενημέρωσε σε παρακαλώ να μας φύγει η περιέργεια!!
Λύσεις θεμάτων ΠΔΠ: https://pdp-archive.github.io/
Μπούσουλας διαβάσματος ΠΔΠ: http://snf-800715.vm.okeanos.grnet.gr/PDP/
Tutorials: https://kallinikos.github.io/
Επίσημο forum ΠΔΠ: https://www.pdpforum.eu.org/forum/
Απάντηση