[Python] Long Table Aal Shop

1. Problem

Das Problem zu finden, wie viele Personen auf einem runden Tisch sitzen können (Anzahl der Tische n). Wenn sich auch nur eine Person in einer Gruppe nicht setzen kann, kehrt die Gruppe zurück.

Der Eingang besteht aus m + 1 Zeilen. In der ersten Zeile werden n (Anzahl der Sitzplätze) und m (Anzahl der Gruppen) getrennt durch Leerzeichen halber Breite eingegeben. In der Zeile i + 1 (1 ≤ i ≤ m) werden zwei Ganzzahlen a_i (Anzahl der Personen in der Gruppe) und b_i (Anzahl der Sitzstartsitzplätze) getrennt durch ein Leerzeichen halber Breite eingegeben.

Bedingungen In allen Testfällen erfüllen die eingegebenen Werte folgende Bedingungen: 1≦n≦100 1≦m≦100 1≦a_i≦n 1≦b_i≦n

951A057A-C7C6-4595-ADBF-2CBC7D6FC8E0.jpeg

2. Wie man denkt

(1) Tabellennummer

Wenn k Personen in einer Gruppe i sind und sie vom b_i-Tisch sitzen Diese Gruppe

b_i,...,b_(i+k-1)

Es soll bis zum Tisch sitzen.

Zum Beispiel, wenn die Anzahl der Tabellen 6 ist und (a_i, b_i) = (4,5) oben Beachten Sie, dass die Tischnummer, auf der Sie sitzen möchten, (5,6,1,2) anstelle von (5,6,7,8) lautet. Hier habe ich beschlossen zu denken, dass alle Tabellennummern __b_j% n sind (der Rest von b_j geteilt durch n) __.

(2) Ob eine Gruppe sitzt oder nicht: Bestimmt durch die check_arr-Funktion

Sitztischlayout: ar_table Ein Array von Tabellennummern, auf denen eine Gruppe sitzen soll (Erstellt mit der Funktion make_tblarr): ar_chk Wenn ar_table auch nur ein Element von ar_chk enthält, wird beurteilt, dass es nicht sitzen kann.

(3) Anzeige der Anzahl der Personen, die sitzen

Die Gruppe, die entschlossen ist, oben sitzen zu können, fügt diese Tischnummern zur Anordnung der sitzenden Tische hinzu. Schließlich wird die Größe des Sitztischarrays angezeigt.

3. Codebeispiel

Der Betrieb wurde bestätigt.


# coding: utf-8
# Your code here!
in1=input()
arr1=in1.split()
n1=int(arr1[0])
n2=int(arr1[1])

in2=[]
for i in range(n2):
    tmp=input()
    in2.append(tmp)
#print(in2)


def make_tblarr(in2,nmax):
    arr3=[]
    arr2=in2.split()
    nn=int(arr2[0])
    st=int(arr2[1])

    for i in range(nn):
        arr3.append((st+i)%nmax)

    return arr3


#ar_table:Anordnung der Sitztischnummern
#ar_chk:Reihenfolge überprüft werden
#ar_Ar auf dem Tisch_0, wenn nicht alle Elemente von chk enthalten sind, 1, wenn eingeschlossene Elemente gefunden werden
def check_arr(ar_table,ar_chk):
    flg=0
    for i in range(len(ar_chk)):
        #Das zu prüfende Array-Element ist bereits ar_Wenn in der Tabelle enthalten
        if ar_table.count(ar_chk[i])>0:
            #setze flg auf 1
            flg=1
            break
    return flg


retar=[]
for i in range(n2):
    ar3=make_tblarr(in2[i],n1)
#print(ar3)
    if check_arr(retar,ar3)== 0:
        for j in range(len(ar3)):
            retar.append(ar3[j])

print(len(retar))

Recommended Posts

[Python] Long Table Aal Shop
Django Python Verschiebungstabelle
Wickeln Sie lange Ausdrücke in Python ein
[Python] [Inhaltsverzeichnis Links] Python-Programmierung
Kurzreferenztabelle im Python-Datetime-Format
Erste Schritte mit Python3
[Python] Neunundneunzig Tabellen, die for-Anweisungen verwenden