AtCoder JSC2019 Qual B Gelöst von Ruby und Python

Einführung

Dieses Thema

AtCoder JSC2019 Qual B - Kleene Inversion Difficulty: 797

Dieses Thema, Summe aus Gleichheitsfolge + inversem Element Ruby Ich habe noch nie von "Stürzen" gehört, aber mal sehen, welche Art von "Stürzen" es zum Beispiel "1 3 2" sein wird.

K 3 2 1 gesamt
132 1 1
132 132 4 1 5
132 132 132 7 4 1 12

Ein "1 3 2" ist "1", zwei nebeneinander "1 3 2 1 3 2" ist "4 + 1" und drei sind in einer Reihe "1 3 2 1 3 2 1 3 2" ist "7" Sie können sehen, dass es die Summe von + 4 + 1` und der Gleichheitsfolge ist. Die Formel für die Summe der Gleichheitsfolgen finden Sie unter * here *.

ruby.rb


n, k = gets.split.map(&:to_i)
a = gets.split.map(&:to_i)
b = a + a
c = 0
(a.size - 1).times do |i|
  (i + 1).upto(a.size - 1) do |j|
    c += 1 if a[i] > a[j]
  end
end
d = 0
(b.size - 1).times do |i|
  (i + 1).upto(b.size - 1) do |j|
    d += 1 if b[i] > b[j]
  end
end
d -= c * 2
def modpow(n, p, mod)
  r = 1
  while p > 0
    r = r * n % mod if p & 1 == 1;
    n = n * n % mod
    p >>= 1
  end
  r
end
def modinv(n, mod)
  modpow(n, mod - 2, mod)
end
MOD = 1_000_000_007
ans = (k - 1) * d % MOD
ans += 2 * c
ans %= MOD
ans *= k
ans %= MOD
ans *= modinv(2, MOD)
ans %= MOD
puts ans

cal.rb


c = 0
(a.size - 1).times do |i|
  (i + 1).upto(a.size - 1) do |j|
    c += 1 if a[i] > a[j]
  end
end
d = 0
(b.size - 1).times do |i|
  (i + 1).upto(b.size - 1) do |j|
    d += 1 if b[i] > b[j]
  end
end
d -= c * 2

Hier werden der erste Term "c" und die Toleranz "d" berechnet.

wa.rb


ans = (k - 1) * d % MOD
ans += 2 * c
ans %= MOD
ans *= k
ans %= MOD
ans *= modinv(2, MOD)
ans %= MOD

Dies ist der offizielle Teil der Summe der Gleichheitsfolge, aber da es eine Division durch "2" gibt, ist es notwendig, das inverse Element zu finden. Python

python.py


n, k = map(int, input().split())
a = list(map(int, input().split()))
b = a + a
c = 0
for i in range(len(a)):
    for j in range(i + 1, len(a)):
        if a[i] > a[j]:
            c += 1
d = 0
for i in range(len(b)):
    for j in range(i + 1, len(b)):
        if b[i] > b[j]:
            d += 1
d -= c * 2
def modpow(n, p, mod):
    r = 1
    while p > 0:
        if p & 1 == 1:
            r = r * n % mod
        n = n * n % mod
        p >>= 1
    return r
def modinv(n, mod):
    return modpow(n, mod - 2, mod)
MOD = 10 ** 9 + 7
ans = (k - 1) * d % MOD
ans += 2 * c
ans %= MOD
ans *= k
ans %= MOD
ans *= modinv(2, MOD)
ans %= MOD
print(ans)

Selbst mit "PyPy3 (2.4.0)" kann es so verwendet werden, wie es ist.

Ruby Python PyPy3
Codelänge(Byte) 621 676 676
Ausführungszeit(ms) 948 1903 322
Erinnerung(KB) 1916 3188 41692

Zusammenfassung

Referenzierte Site

Recommended Posts

AtCoder JSC2019 Qual B Gelöst von Ruby und Python
AtCoder ARC104 B Kumulative Summe in Ruby, Python und Java gelöst
Lösen mit Ruby und Python AtCoder ABC084 D Kumulative Summe der Primzahlen
Lösen mit Ruby und Python AtCoder CODE FESTIVAL 2016 qual C B Priority Queue
Lösen mit Ruby und Python AtCoder ABC133 D Kumulative Summe
Lösen mit Ruby, Perl, Java und Python AtCoder ATC 002 B.
Lösen mit Ruby, Python und numpy AtCoder ABC054 B Matrixberechnung
Lösen mit Ruby, Perl, Java und Python AtCoder ABC 107 B String-Manipulation
Lösen mit Ruby, Perl, Java und Python AtCoder ABC 047 C Regulärer Ausdruck
[AtCoder] Lösen Sie ein Problem von ABC101 ~ 169 mit Python
Lösen mit Ruby, Perl, Java und Python AtCoder ARC 086 C Hash-Sortierung
Löse AtCoder 167 mit Python
Vergleich von CoffeeScript mit JavaScript-, Python- und Ruby-Grammatik
Lösen mit Ruby und Python AtCoder ARC 059 C Minimum-Quadrat-Methode
Löse AtCoder ABC166 mit Python
Lösen mit Ruby und Python AtCoder ABC178 D Dynamische Planungsmethode
Lösen mit Ruby und Python AtCoder ABC151 D Suche nach Breitenpriorität
Eine Sammlung wettbewerbsfähiger Pro-Techniken, die mit Python gelöst werden können
Lösen mit Ruby und Python AtCoder AISING2020 D Iterative Square-Methode
Lösen mit Ruby, Perl, Java und Python AtCoder ATC 002 A.
Geben Sie die Bilddaten mit Flask of Python zurück und zeichnen Sie sie in das Canvas-Element von HTML
Lösen mit Ruby und Python AtCoder ABC011 C Dynamische Planungsmethode
Lösen mit Ruby und Python AtCoder ABC153 E Dynamische Planungsmethode
Lösen mit Ruby und Python AtCoder ARC067 C Primfaktorisierung
Lösen mit Ruby und Python AtCoder ABC138 D Benachbarte Liste
So melden Sie sich mit Python bei AtCoder an und senden automatisch
Ich möchte APG4b mit Python lösen (nur 4.01 und 4.04 in Kapitel 4)
Lösen mit Ruby, Python und networkx AtCoder ABC168 D Benachbarte Liste
Lösen mit Ruby, Perl, Java und Python AtCoder ABC 065 C-te Potenz
Scraping mit Node, Ruby und Python
Beheben von AtCoder-Problemen Empfehlung mit Python (20200517-0523)
Koexistenz von Python2 und 3 mit CircleCI (1.0)
Lösen mit Ruby und Python AtCoder ABC057 C Zerlegung des Primfaktors Bit vollständige Suche
[Erklärung zum AtCoder] Kontrollieren Sie die A-, B- und C-Probleme von ABC182 mit Python!
Lösen mit Ruby, Perl, Java und Python AtCoder AGC 033 Eine Suche mit Breitenpriorität
Lösen mit Ruby, Perl, Java und Python AtCoder ARC 098 C Kumulative Summe
Lösen mit Ruby, Perl, Java und Python AtCoder CADDi 2018 C Primfaktorisierung
AtCoder ABC 165 D Bodenfunktion in Ruby, Perl, Java und Python gelöst
Lösen mit Ruby und Python AtCoder Tenka1 Programmer Contest C Kumulative Summe
Lösen mit Ruby, Perl, Java und Python AtCoder ABC 131 D Sortieren von Arrays
Python-Code zum Trainieren und Testen mit Custom Vision of Cognitive Service
Versuchen Sie, ein festgelegtes Problem der High-School-Mathematik mit Python zu lösen
[AtCoder Erklärung] Kontrollieren Sie ABC184 A, B, C Probleme mit Python!
Fraktal zum Erstellen und Spielen mit Python
Ich wollte ABC160 mit Python lösen
[AtCoder] Löse ABC1 ~ 100 Ein Problem mit Python
Mit Ruby (Rails) verschlüsseln und mit Python entschlüsseln
Einfaches Web-Scraping mit Python und Ruby
Ich wollte ABC172 mit Python lösen
[Erklärung zum AtCoder] Kontrollieren Sie die A-, B-, (C), D-Probleme von ABC165 mit Python!
[AtCoder-Erklärung] Kontrollieren Sie die A-, B-, C- und D-Probleme von ABC183 mit Python!
[Erklärung zum AtCoder] Kontrollieren Sie die A-, B-, C- und D-Probleme von ABC181 mit Python!
Kratzen Sie das Essen mit Python und geben Sie es an CSV aus
MessagePack-Versuchen Sie, Java und Python mit RPC zu verbinden
Zusammenfassung der Korrespondenz zwischen Ruby- und Python-Array-Operationen
Versuchen Sie, das Mensch-Maschine-Diagramm mit Python zu lösen