Beheben von AtCoder-Problemen Empfehlung mit Python (20200517-0523)

Liste der in diesem Artikel aufgeführten Probleme

  1. AGC057 A Shik and Stone
  2. ABC070 C Multiple Clocks
  3. ABC123 C Five Transportations
  4. AGC008 A Simple Calculator
  5. [ARC059 C zusammen](# arc059-c-with)
  6. [ABC047 C eindimensionale Umkehrung](# abc047-c-eindimensionale Umkehrung)
  7. ABC143 D Triangles
  8. [ABC035 B-Drohne](# abc035-b-Drohne)
  9. AGC011 A Airport Bus
  10. AGC002 B Box and Ball
  11. ABC078 C HSI
  12. [ARC054 A Moving Trail](# arc054-a-Moving Trail)
  13. ABC065 C Reconciled?
  14. [Panasonic Programming Contest 2020 C Sqrt Ungleichung](#Panasonic Programming Contest 2020-c-sqrt-Ungleichung)

Was ich bei der Lösung des oben genannten Problems gelernt habe

Über reduzieren

  1. map (führe eine Funktion auf jedem Iterator aus und gib sie auf dem Iterator zurück)
  2. filter (nur das Ergebnis der Ausführung der Funktion für jeden Iterator ist True wird vom Iterator zurückgegeben))

Über das Runden von Ziffern

――In Wettkampfprofis sieht die Rundung der Ziffern manchmal als Code korrekt aus, aber es gibt Fälle, in denen es zu WA wird (5 und 14. oben).

Über Dichotomie

--Wenn Sie nach Werten aus einer sortierten Liste suchen, ist es (häufig) besser, eine Dichotomie als eine lineare Suche durchzuführen.

Durch Verwendung der Dichotomie kann der Rechenaufwand im Vergleich zur linearen Suche von $ O (n) $ auf $ O (\ log n) $ reduziert werden.

Wie man jedes Problem löst

AGC057 A Shik and Stone

# AGC057 A Shik and Stone

h,w = map(int, input().split())

_list = []
for i in range(h):
    _list += list(input())

if _list.count("#") == (h+w-1):
    print("Possible")
else:
    print("Impossible")

ABC070 C Multiple Clocks

# ABC070 C Multiple Clocks

from functools import reduce
from fractions import gcd #python3.Vor 5
# from math import gcd      #python3,5 oder später

def lcm_base(x,y):
    return (x*y)//gcd(x,y)

def multi_lcm(numbers):
    return reduce(lcm_base, numbers)

n = int(input())
t_list = [int(input()) for i in range(n)]

print(multi_lcm(t_list))

ABC123 C Five Transportations --Zeit erforderlich: -minutes --Point: Sie können verstehen, indem Sie ein Beispiel auf Papier schreiben

# ABC123 C Five Transportations
import math

n = int(input())
a = int(input())
b = int(input())
c = int(input())
d = int(input())
e = int(input())

_min = min([a,b,c,d,e])
_ans = math.ceil(n/_min)

print(_ans+4)

AGC008 A Simple Calculator Impressionen ――Es ist leicht zu sehen, aber es gibt überraschend viele Muster (vielleicht kann es schöner gemacht werden). ――Ich habe zweimal WA bekommen, weil ich eine grobe Musterteilung durchgeführt habe, als einer von beiden 0 war.

# AGC008 A Simple Calculator

x, y = map(int, input().split())
_x = abs(x)
_y = abs(y)

if x > 0 and y > 0:
    if x <= y:
        print(y-x)
    else:
        print(x-y+2)
elif x * y < 0:
    print(abs(_y-_x)+1)
elif x == 0:
    if y >= 0:
        print(y)
    else:
        print(_y+1)
elif y == 0:
    if x > 0:
        print(x+1)
    else:
        print(_x)
else:
    if _x < _y:
        print(_y-_x+2)
    else:
        print(_x-_y)

ARC059 C zusammen

Impressionen

#ARC059 C zusammen

n = int(input())
a_list = [int(x) for x in input().split()]

ave = ((sum(a_list) / len(a_list)) * 2 + 1) // 2

ans = sum([(x-ave)**2 for x in a_list])

print(int(ans))

ABC047 C Eindimensionale Umkehrung

Impressionen

#ABC047 C Eindimensionale Umkehrung

import itertools

s = itertools.groupby(list(input()))

ans = 0
for _ in s:
    ans += 1

print(ans - 1)

ABC143 D Triangles

Mit der zweiten Option kann der Rechenaufwand von $ O (n ^ {3}) $ auf $ O (n ^ {2} \ log n) $ reduziert werden.

Teil 1

# ABC143 D Triangles TLE

n = int(input())
l_list = [int(x) for x in input().split()]

l_list.sort()
ans = 0

# (i < j < k) -> (_a < _b < _c)
for i in range(n-2):
    _a = l_list[i]
    for j in range(i+1,n-1):
        _b = l_list[j]
        _tmp = _a + _b
        for k in range(j+1,n):
            _c = l_list[k]
            if _c < _tmp:
                ans += 1
            else:
                break

print(ans)

Teil 2

# ABC143 D Triangles

import bisect

n = int(input())
l_list = [int(x) for x in input().split()]

l_list.sort()
ans = 0

for i in range(n-2):
    _a = l_list[i]
    for j in range(i+1,n-1):
        _b = l_list[j]
        _tmp = bisect.bisect_left(l_list, _a+_b)
        if j < _tmp:
            ans += _tmp - j - 1

print(ans)

ABC035 B Drohne

#ABC035 B Drohne
from collections import Counter

s = Counter(input())
t = int(input())

l = s["L"]
r = s["R"]
u = s["U"]
d = s["D"]
q = s["?"]

x = r-l
y = u-d

if t == 1:
    print(abs(x) + abs(y) + q)
else:
    _tmp = abs(x) + abs(y)
    if _tmp >= q:
        print(_tmp - q)
    elif (_tmp - q) % 2 == 0:
        print("0")
    else:
        print("1")

AGC011 A Airport Bus

Ich habe erneut bestätigt, dass Daten, die oben in der Liste stehen, in die Warteschlange gestellt werden sollten.

Teil 1

# AGC011 A Airport Bus TLE
import bisect

n, c, k = map(int, input().split())
t_list = [int(input()) for _ in range(n)]

t_list.sort()
ans = 0

while len(t_list) > 0:
    _tmp = t_list[0] + k
    _idx = bisect.bisect_right(t_list, _tmp)
    if c <= _idx + 1:
        t_list = t_list[c:]
    else:
        t_list = t_list[_idx:]
    ans += 1

print(ans)

Teil 2

# AGC011 A Airport Bus
import bisect
from collections import deque

n, c, k = map(int, input().split())
t_list = [int(input()) for _ in range(n)]

t_list.sort()
t_list = deque(t_list)
ans = 0

while len(t_list) > 0:
    _tmp = t_list.popleft() + k
    _idx = bisect.bisect_right(t_list, _tmp)
    if c-1 <= _idx:
        for _ in range(c-1):
            t_list.popleft()
    else:
        for _ in range(_idx-1):
            t_list.popleft()
    ans += 1

print(ans)

AGC002 B Box and Ball

# AGC002 B Box and Ball

n, m = map(int, input().split())

b_list = [0] * (n+1)
b_list[1] = 1
c_list = [1] * (n+1)

for i in range(m):
    _x, _y = map(int, input().split())
    c_list[_x] -= 1
    c_list[_y] += 1 
    if b_list[_x] == 1:
        b_list[_y] = 1
        if c_list[_x] == 0:
            b_list[_x] = 0

print(sum(b_list))

ABC078 C HSI

# ABC078 C HSI

n, m = map(int, input().split())

i = (1/2)**m

x = (100*(n-m) + 1900*m) / i
print(int(x))

ARC054 Ein beweglicher Bürgersteig

#ARC054 Ein beweglicher Bürgersteig

l, x, y, s, d = map(int, input().split())

ans = float("Inf")
j = (d-s)%l
r = (s-d)%l
ans = min(ans,j/(y+x))
if y > x:
    ans = min(ans,r/(y-x))
print(ans)

ABC065 C Reconciled?

# ABC065 C Reconciled?

import math

n, m = map(int, input().split())
A = 10**9 + 7

if abs(n-m) > 1:
    print("0")
elif n == m:
    print(((math.factorial(m)**2)*2)%A)
else:
    print((math.factorial(m)*math.factorial(n))%A)

Panasonic Programmierwettbewerb 2020 C Sqrt Ungleichung

Teil 1

#Panasonic Programmierwettbewerb 2020 C Sqrt Ungleichung WA
import math
from decimal import Decimal

a, b, c = map(Decimal, input().split())
_a, _b, _c = map(math.sqrt, [a,b,c])

if _a + _b < _c:
    print("Yes")
else:
    print("No")

Teil 2

#Panasonic Programmierwettbewerb 2020 C Sqrt Ungleichung
from decimal import Decimal

a, b, c = map(int,input().split())
a, b, c = Decimal(a),Decimal(b),Decimal(c)
if a**Decimal("0.5") + b**Decimal("0.5") < c**Decimal("0.5"): 
    print('Yes')
else:
    print('No')

Recommended Posts

Beheben von AtCoder-Problemen Empfehlung mit Python (20200517-0523)
Löse AtCoder 167 mit Python
Löse AtCoder ABC166 mit Python
Lösen Sie AtCoder-Probleme Bootcamp für Anfänger (Medium 100) mit Python
[Python] Löse 10 vergangene Eliteprobleme von Atcoder
[AtCoder] Löse ABC1 ~ 100 Ein Problem mit Python
Löse AtCoder ABC168 mit Python (A ~ D)
Löse Mathe mit Python
Löse POJ 2386 mit Python
[AtCoder] Lösen Sie ein Problem von ABC101 ~ 169 mit Python
Löse "AtCoder Version! Arimoto (Anfänger)" mit Python!
[Python] Löse Gleichungen mit Sympy
Hellblau mit AtCoder @Python
Lösen Sie Optimierungsprobleme mit Python
Solver> Link> Lösen Sie Excel Solver mit Python
Löse ABC163 A ~ C mit Python
[AtCoder Erklärung] Kontrollieren Sie ABC180 A, B, C Probleme mit Python!
atCoder 173 Python
Löse ABC166 A ~ D mit Python
Lösen mit Ruby und Python AtCoder ABC133 D Kumulative Summe
Löse den Atcoder ABC169 A-D mit Python
Löse ABC168 A ~ C mit Python
[AtCoder Erklärung] Kontrollieren Sie ABC158 A, B, C Probleme mit Python!
AtCoder ABC 114 C-755 mit Python3 gelöst
Löse ABC162 A ~ C mit Python
Löse ABC167 A ~ C mit Python
Löse ABC158 A ~ C mit Python
[AtCoder Erklärung] Kontrollieren Sie ABC164 A, B, C Probleme mit Python!
[AtCoder Erklärung] Kontrollieren Sie ABC168 A, B, C Probleme mit Python!
AtCoder ARC104 B Kumulative Summe in Ruby, Python und Java gelöst
So schreiben Sie offline in Echtzeit Lösen von F01-Problemen mit Python
Ich wollte ABC160 mit Python lösen
Empfehlung von Altair! Datenvisualisierung mit Python
Lösen Sie Lake Counting (POJ NO.2386) mit Python3
Ich wollte ABC172 mit Python lösen
FizzBuzz in Python3
Scraping mit Python
[Erklärung zum AtCoder] Kontrollieren Sie die A-, B- und C-Probleme von ABC182 mit Python!
Statistik mit Python
Scraping mit Python
Python mit Go
Twilio mit Python
In Python integrieren
Spielen Sie mit 2016-Python
Lösen Sie Optimierungsprobleme mit Quantenglühen auf Python-Basis so einfach wie möglich
AES256 mit Python
Getestet mit Python
Python beginnt mit ()
mit Syntax (Python)
Löse den AtCoder-Anfängerwettbewerb 170 D - Nicht teilbar (ABC170D) mit Python (Eratostenes-Sieb)
Bingo mit Python
Lösen mit Ruby, Perl, Java und Python AtCoder ABC 047 C Regulärer Ausdruck
Zundokokiyoshi mit Python
AtCoder ABC 175 Python