AtCoder Beginner Contest 131 D - Megalomania Difficulty: 594
Dieses Thema, Sortieren von Arrays Ruby Es ist eine Array-Sortierung, daher denke ich, dass es einfach zu implementieren ist. ~~ Da dies mein erster Python ist, habe ich eine leichtere Frage gewählt. ~~
ruby.rb
n = gets.to_i
a = Array.new(n){gets.split.map(&:to_i)}
a.sort_by!{|x| x[1]}
ans = 0
n.times do |i|
ans += a[i][0]
if ans > a[i][1]
puts "No"
exit
end
end
puts "Yes"
sort.rb
a.sort_by!{|x| x[1]}
~~ Sortieren nach mehreren Bedingungen, aber zu Lernzwecken kann nur eine als Lösung sortiert werden. ~~ ** Ergänzung ** Aus den eingegangenen Kommentaren wurden einige Korrekturen vorgenommen. Python Es ist fast eine Kopie, weil es zum ersten Mal mit *** Python *** gelöst wurde.
python.py
n = int(input())
a = list(list(map(int, input().split())) for _ in range(n))
a.sort(key=lambda x: x[1])
ans = 0
for i in range(0, n):
ans += a[i][0]
if ans > a[i][1]:
print("No")
exit()
print("Yes")
Die Codierung ist einfach, da die VSCode-Erweiterung funktioniert.
range.py
for i in range(0, n):
for i in range(0, n - 1):
Ich habe versucht, es mit i at for zu drehen, aber ich habe n -1 geschrieben und WA
bekommen.
Nächstes Mal werde ich versuchen, nach mehreren Bedingungen zu sortieren. Perl
perl.pl
chomp (my $n = <STDIN>);
my @a;
for my $i (0..$n-1) {
my @in = split / /, <STDIN>;
($a[$i][0], $a[$i][1]) = @in;
}
@a = sort {$$a[1]<=>$$b[1] || $$b[0]<=>$$a[0]} @a;
my $ans = 0;
for my $i (0..$n-1) {
$ans += $a[$i][0];
if ($ans>$a[$i][1]) {
print "No\n";
exit;
}
}
print "Yes\n";
sort.pl
@a = sort {$$a[1]<=>$$b[1] || $$b[0]<=>$$a[0]} @a;
java.java
import java.util.*;
class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = Integer.parseInt(sc.next());
List<Work> work = new ArrayList<>();
for (int i = 0; i < n; i++) {
int time = Integer.parseInt(sc.next());
int limit = Integer.parseInt(sc.next());
work.add(new Work(time, limit));
}
sc.close();
work.sort(Comparator.comparingInt(x -> x.limit));
int ans = 0;
for (int i = 0; i < n; i++) {
ans += work.get(i).time;
if (ans > work.get(i).limit) {
System.out.println("No");
return;
}
}
System.out.println("Yes");
}
static class Work {
int time;
int limit;
Work(int time, int limit) {
this.time = time;
this.limit = limit;
}
}
}
sort.java
work.sort(Comparator.comparingInt(x -> x.limit));
** Ergänzung ** Wie mir in den Kommentaren gesagt wurde, habe ich den Vergleichsteil der Sortierung in den Code geändert, der den in Java8 eingeführten Comparator verwendet. Sicherer und etwas schneller.
Ruby | Python | Perl | Java | |
---|---|---|---|---|
Codelänge | 189 Byte | 231 Byte | 315 Byte | 972 Byte |
Ausführungszeit | 484 ms | 995 ms | 1237 ms | 883 ms |
Erinnerung | 22520 KB | 53728 KB | 66788 KB | 72900 KB |
Recommended Posts