Softwarewettbewerb Blue Bridge Cup – Beispiel für gängige Operationen in Python

Algorithmus-Lehrbuch: „Introduction to Advanced Algorithm Competition“ Tsinghua University Press
Online-Shopping: Jingdong Dangdang   Signaturbuch des Autors (mit Rechnung): click me
Wenn Sie Vorschläge haben, fügen Sie bitte die QQ-Gruppe hinzu: 567554289


  Bei der Teilnahme am Blue Bridge Cup Python-Gruppenwettbewerb sind die häufigsten Probleme von Anfängern Zweifel an der Verarbeitung von Ein- und Ausgabe und Unvertrautheit mit häufig verwendeten Sortierungen und Warteschlangen. Dieser Artikel fasst die beteiligten Vorgänge zusammen.

1. for-Schleife

  Beispiel 1: iiDer Bereich von i ist 4~(20190325-1)

for i in range(4,20190325):

  Referenz: https://blog.csdn.net/weixin_43914593/article/details/112979520
  
  Beispiel 2: iiDer Bereich von i ist 0~(len(num)-1)

for i in range(len(num)):

  Referenz: https://blog.csdn.net/weixin_43914593/article/details/112560449

2. sort()- und sorted()-Funktionen

  sort() sortiert ein Array, zum Beispiel:

n, s = map(int,input().split())
a = list(map(int,input().split()))
a.sort()

  Referenz: https://blog.csdn.net/weixin_43914593/article/details/112930544

  sorted() sortiert die Struktur, zum Beispiel:

a = sorted(a, key=lambda a: a[0])

  Referenz: https://blog.csdn.net/weixin_43914593/article/details/112979653

3. Warteschlange

  Beispiel:

from queue import *
q = Queue()              
q.put((x,y))    #用队列直接处理结构体
q.empty():            
q.get() 

  Referenz: https://blog.csdn.net/weixin_43914593/article/details/112851771

4. Array-Zuweisung

  Beispiel 1: Weisen Sie 0 ein eindimensionales Array zu

flag = [0 for i in range(n+1)]

  Referenz: https://blog.csdn.net/weixin_43914593/article/details/112979653

  Beispiel 2: Weisen Sie 0 ein zweidimensionales Array zu

r = [[0] * 3 for i in range(k)]

  Referenz: https://blog.csdn.net/weixin_43914593/article/details/112909051

  Beispiel 3: S[i] i zuweisen

N=1000002
s=[]   
for i in range(N):  
    s.append(i)

  Referenz: https://blog.csdn.net/weixin_43914593/article/details/112979670

5. Eingabe

5.1 Eingabe mehrerer Ganzzahlen in einer Zeile

  Beispiel 1: Die erste Zeile enthält eine ganze Zahl N, die zweite Zeile enthält N ganze Zahlen

n = int(input())
a = input().split(" ")
int(a[i])     #使用时要转换

#或者这样写:
a=[int(i) for i in input().split()]

  Referenz: https://blog.csdn.net/weixin_43914593/article/details/112979634

  Beispiel 2: Geben Sie eine Zeile mit mehreren Ganzzahlen ein

num=[int(i) for i in input().split()]

  Referenz: https://blog.csdn.net/weixin_43914593/article/details/112560449

5.2 Eingabe von zweidimensionalen Arrays

  Beispiel: Die erste Zeile enthält 3 ganze Zahlen N, M und T, und jede der folgenden M Zeilen enthält zwei ganze Zahlen ts und id.

first = input()
n, m, T = [int(i) for i in first.split()]

a = []       #这是二维数组
for i in range(m):
    a.append([int(i) for i in input().split()])

  Referenz: https://blog.csdn.net/weixin_43914593/article/details/112979653

5.3 Geben Sie Zahlen ein, die durch Nicht-Leerzeichen getrennt sind

  Beispiel:
  Die erste Eingabezeile ist eine positive Ganzzahl T, die die Anzahl der Eingabedatengruppen darstellt.
  Jeder Datensatz enthält zwei Zeilen, die erste Zeile ist die Start- und Landezeit der Hinfahrt, und die zweite Zeile ist die Start- und Landezeit der Rückfahrt.
  Das Format der Start- und Landezeit ist wie folgt
  : h1:m1:s1 h2:m2:s2
  h1:m1:s1 h3:m3:s3 (+1)
  h1:m1:s1 h4:m4:s4 (+2)

def get_time():
     line = str(input()).split(' ')   #一行字符串,以空格分开,分别读取     
     h1=int(line[0][0:2])     #处理字符串中的数字
     m1=int(line[0][3:5])
     s1=int(line[0][6:8])
     
     h2=int(line[1][0:2])
     m2=int(line[1][3:5])
     s2=int(line[1][6:8])

     day = 0 
     if(len(line)==3):    #line中有3个元素,最后一个是day
          day = int(line[2][2])

     S = h1*3600 + m1*60 + s1
     E = h2*3600 + m2*60 + s2
     return E - S + day*24*3600
 
n = int(input())
for i in range(n):
    ans = (get_time()+ get_time())/2
    hh = int(ans/3600)
    mm = int(ans/60%60)
    ss = int(ans%60)
    print("{:0>2d}:{:0>2d}:{:0>2d}".format(hh,mm,ss))

  Referenz: https://blog.csdn.net/weixin_43914593/article/details/112728088

5.4 Eingabe mehrerer Nummern mit Karte

  Beispiel 1:
  Die erste Zeile enthält 4 positive ganze Zahlen A, B, C, m;
  die zweite Zeile enthält A × B × C ganze Zahlen, wobei ((i − 1)×B + (j − 1)) × C + (k − 1)+1 Zahlen sind d(i, j, k);
  in Zeile 3 bis m + 2 enthält Zeile (t − 2) 7 positive ganze Zahlen lat, rat, lbt, rbt, lct, rct, ht.

A,B,C,m = map(int,input().split())

ship=[]
for i in range(A):
    sublist=[]
    for j in range(B):
        sublist.append([0]*C)
    ship.append(sublist)
    
life=list(map(int,input().split()))

  Referenz: https://blog.csdn.net/weixin_43914593/article/details/112761182

  Beispiel 2: Die erste Zeile enthält 2 positive ganze Zahlen n, K. Die zweite Zeile enthält n positive ganze Zahlen, die die gegebenen n Zahlen darstellen.

n, k = map(int,input().split())
a = input().split()

  Referenz: https://blog.csdn.net/weixin_43914593/article/details/112909051

  Beispiel 3: Die erste Zeile enthält zwei ganze Zahlen n, S, die zweite Zeile enthält n nicht negative ganze Zahlen a1, …, an.

n, s = map(int,input().split())
a = list(map(int,input().split()))

  Referenz: https://blog.csdn.net/weixin_43914593/article/details/112930544

5.5 Zeichen eingeben

  Beispiel: Geben Sie eine Zeichenkette bestehend aus „x()|“ ein.

s = input()
if s[pos] == '(':
elif s[pos] == 'x':

  Referenz: https://blog.csdn.net/weixin_43914593/article/details/112363933

5.6 Zeilenvorschubeingang

  Beispiel 1:
  Die erste Zeile enthält eine ganze Zahl N. (1 <= N <= 100)
  Jede der folgenden N Zeilen enthält eine ganze Zahl Ai. (1 <= Ai <= 100)

n=int(input())
numlist=[]
for i in range(n):
    numlist.append(int(input()))

  Referenz: https://blog.csdn.net/weixin_43914593/article/details/112405425

  Beispiel 2:
  Die erste Zeile enthält zwei ganze Zahlen N und K. (1 <= N, K <= 100000)
  Jede der folgenden N Zeilen enthält zwei ganze Zahlen Hi und Wi. (1 <= Hallo, Wi <= 100000)

n,k = map(int,input().split())
w = []
h = []
for i in range(n):
    a,b = map(int,input().split())
    w.append(a)
    h.append(b)

  Referenz: https://blog.csdn.net/weixin_43914593/article/details/112424722

5.7 Eingänge, die keine Terminierung spezifizieren

  Manchmal gibt der Titel nicht an, wann die Eingabe beendet wird, wie etwa „es gibt mehrere Sätze von Testdaten, jede Zeile von Testdaten enthält eine positive ganze Zahl n (1<=n<=10000).“
  Lösung : für n in sys .stdin

import sys
for n in sys.stdin:   
    n = int(n)
    n1 = int(n**0.5)
    s = 0
    for a in range(1, n1+1):
        for b in range(a, n1+1):
            if n - a**2 - 2*(b**2) >= 0:
                c = int(pow((n - a**2 - b**2 ), 0.5))
                if a**2 + b**2 + c**2 == n:
                    s = 1
                    print("{} {} {}".format(a, b, c))
 
    if s == 0:
        print("No Solution")

  Referenz: http://oj.ecustacm.cn/problem.php?id=1250
  Der C++-Code für diese Frage lautet:

#include <iostream>
#include <cmath> 
using namespace std;
bool flag;
int main(){
    
    
    int n;
    while(cin>>n){
    
    
     int m = sqrt(n)+1;
     for(int i=1;i<=m;i++){
    
    
        for(int j=i;j<=m;j++){
    
    
            for(int k=j;k<=m;k++){
    
    
                if(i*i+j*j+k*k==n){
    
    
                    flag=true;
                    cout<<i<<' '<<j<<' '<<k<<endl;
                }
            }
        }
     }
     if(!flag){
    
    
        cout<<"No Solution"<<endl;
     }
     flag=false;
   }
   return 0;
}

6. Formatierte Ausgabe

  Beispiel 1: Die Ausgabe wird auf 4 Nachkommastellen gerundet.

print('{:.4f}'.format(sqrt(sum/(n))))

  Referenz: https://blog.csdn.net/weixin_43914593/article/details/112930544
  
  Beispiel 2: Geben
  Sie für jeden Datensatz eine Zeitzeile hh:mm:ss aus, die angibt, dass die Flugzeit hh Stunden mm Minuten ss beträgt Sekunden.
  Beachten Sie, dass führende Nullen aufgefüllt werden müssen, wenn die Zeit eine einstellige Zahl ist. Beispielsweise sollten drei Stunden, vier Minuten und fünf Sekunden als 03:04:05 geschrieben werden.

print("{:0>2d}:{:0>2d}:{:0>2d}".format(hh,mm,ss))

  Referenz: https://blog.csdn.net/weixin_43914593/article/details/112728088

Supongo que te gusta

Origin blog.csdn.net/weixin_43914593/article/details/115022186
Recomendado
Clasificación