Keiner
Diesmal war es ungefähr 30 Minuten zu spät. A ~ D war in ungefähr 20 Minuten fertig und E war in ungefähr 20 Minuten fertig, aber ich habe kein Sub ausgewählt, um den Ratenabfall zu vermeiden.
Ich wollte es veröffentlichen, nachdem F gelöst war, aber ich kam nicht auf die Idee von Union Dinf. Es war ein schwieriges Problem.
(Ich habe nach Problem D keinen Kommentar geschrieben. Ich werde ihn später heute aktualisieren.)
Die Farbe ändert sich zufällig.
A.py
print(["White","Black"][int(input())%2])
A.pas
var
n:Smallint;
begin
read(n);
if (n mod 2)=1 then
writeln('Black')
else
writeln('White');
end.
Zuerst dachte ich, dass aufgrund von Fehlinterpretationen nur eine Nummer für jede Nummer geschrieben werden würde, aber da es nicht nur eine ist, müssen Sie nur die Summe der Zahlen finden, die Sie geschrieben haben.
B.py
n=int(input())
ans=0
for i in range(n):
a,b=map(int,input().split())
ans+=(a+b)*(b-a+1)//2
print(ans)
Ich habe gegoogelt, weil ich es vergessen habe, aber ** Um die drei Punkte $ A, B, C $ auf derselben geraden Linie zu haben, sollte das äußere Produkt von $ \ vec {AB}, \ vec {BC} $ 0 sein. ist **.
Daher können Sie drei Kandidaten mit $ O (n ^ 3) $ ausschreiben und prüfen, ob es überhaupt einen mit einem äußeren Produkt von 0 gibt.
C.py
from math import gcd
n=int(input())
points=[list(map(int,input().split())) for i in range(n)]
def calc(i,j,k):
global points,n
vec1=[points[i][0]-points[j][0],points[i][1]-points[j][1]]
vec2=[points[i][0]-points[k][0],points[i][1]-points[k][1]]
return vec1[0]*vec2[1]==vec1[1]*vec2[0]
for i in range(n):
for j in range(i+1,n):
for k in range(j+1,n):
if calc(i,j,k):
print("Yes")
exit()
print("No")
Es wird aktualisiert.
D.py
s=list(map(int,input()))
from itertools import permutations
if len(s)<3:
for i in permutations(s):
x=int("".join(map(str,i)))
if x%8==0:
print("Yes")
exit()
print("No")
exit()
d=dict()
for i in s:
if i in d:
d[i]+=1
else:
d[i]=1
for i in range(100,1000):
if i%8==0:
x=list(map(int,str(i)))
c=dict()
for j in x:
if j in c:
c[j]+=1
else:
c[j]=1
for j in c:
if j not in d:
break
else:
if d[j]>=c[j]:
continue
else:
break
else:
print("Yes")
exit()
print("No")
Es wird aktualisiert.
E.py
n,m=map(int,input().split())
h=list(map(int,input().split()))
h.sort()
w=list(map(int,input().split()))
#Ebenheit([0,1] [2,3] … [n-3,n-2])
x=[0]
for i in range((n-3)//2+1):
x.append(h[2*i+1]-h[2*i])
for i in range((n-3)//2+1):
x[i+1]+=x[i]
#Bizarr([1,2] [3,4] … [n-2,n-1])
y=[0]
for i in range((n-3)//2+1):
y.append(h[2*i+2]-h[2*i+1])
for i in range((n-3)//2+1):
y[i+1]+=y[i]
from bisect import bisect_left
ans=10**12
for i in range(m):
b=bisect_left(h,w[i])
if b%2==0:
c=b
else:
c=b-1
ans=min(ans,x[c//2]+(y[-1]-y[c//2])+abs(w[i]-h[c]))
print(ans)
Es wird aktualisiert.
F.cc
//Debug-Optionen:-fsanitize=undefined,address
//Compileroptimierung
#pragma GCC optimize("Ofast")
//Einschließen usw.
#include<bits/stdc++.h>
using namespace std;
typedef int ll;
//Makro
//für Schleife
//Das Argument ist(Variablen in der Schleife,Bewegungsumfang)Oder(Variablen in der Schleife,Erste Nummer,Anzahl der Enden)、のどちらOder
//Schleifenvariablen ohne D werden um 1 erhöht, und Schleifenvariablen mit D werden um 1 dekrementiert.
//FORA ist ein Bereich für Aussagen(Wenn es schwer zu bedienen ist, löschen Sie es)
#define REP(i,n) for(ll i=0;i<ll(n);i++)
#define REPD(i,n) for(ll i=n-1;i>=0;i--)
#define FOR(i,a,b) for(ll i=a;i<=ll(b);i++)
#define FORD(i,a,b) for(ll i=a;i>=ll(b);i--)
#define FORA(i,I) for(const auto& i:I)
//x ist ein Container wie ein Vektor
#define ALL(x) x.begin(),x.end()
#define SIZE(x) ll(x.size())
//Konstante
#define INF 1000000000000 //10^12:∞
#define MOD 1000000007 //10^9+7:Gemeinsames Recht
#define MAXR 100000 //10^5:Maximale Reichweite des Arrays
//Abkürzung
#define PB push_back //Einfügen
#define MP make_pair //Paarkonstruktor
#define F first //Das erste Element des Paares
#define S second //Das zweite Element des Paares
//Unten repräsentieren die Primzahl und der Baum dasselbe.
class UnionFind{
public:
vector<ll> parent; //parent[i]Ist der Elternteil von i
vector<ll> siz; //Ein Array, das die Größe der Primmenge darstellt(Initialisieren Sie mit 1)
ll n; //Elementanzahl
//Konstrukteur
UnionFind(ll n_):n(n_),parent(n_),siz(n_,1){
//Initialisieren, da die Wurzel aller Elemente selbst ist
for(ll i=0;i<n;i++){parent[i]=i;}
}
//Holen Sie sich die Wurzel des Baums, zu dem Daten x gehören(Führen Sie auch eine Routenkomprimierung durch)
ll inline root(ll x){
if(parent[x]==x) return x;
return parent[x]=root(parent[x]);//Da der Wert des Zuweisungsausdrucks der Wert der zugewiesenen Variablen ist, kann die Route komprimiert werden.
}
//X- und y-Bäume zusammenführen
void inline unite(ll x,ll y){
ll rx=root(x);//x root
ll ry=root(y);//Wurzel von y
if(rx==ry) return;//Wenn im selben Baum
//Kleinen Satz zu großem Satz zusammenführen(Zusammengeführt von ry zu rx)
if(siz[rx]<siz[ry]) swap(rx,ry);
siz[rx]+=siz[ry];
parent[ry]=rx;//Wenn sich x und y nicht im selben Baum befinden, hängen Sie y root ry an x root rx an
}
//Bestimmen Sie, ob der Baum, zu dem x und y gehören, identisch ist
bool inline same(ll x,ll y){
ll rx=root(x);
ll ry=root(y);
return rx==ry;
}
};
typedef tuple<ll,ll,ll> td;
ll n;
pair<ll,ll> xy[101];
UnionFind uf(105);
td edges[5500];
signed main(){
cout<<fixed<<setprecision(10);
scanf("%d",&n);
vector<pair<ll,ll>> xy(n);
REP(i,n)scanf("%d%d",&xy[i].F,&xy[i].S);
ll now=0;
REP(i,n){
edges[now]={(100-xy[i].S)*(100-xy[i].S),i,n};
now++;
edges[now]={(xy[i].S+100)*(xy[i].S+100),i,n+1};
now++;
FOR(j,i+1,n-1){
ll k=(xy[i].F-xy[j].F)*(xy[i].F-xy[j].F);
ll l=(xy[i].S-xy[j].S)*(xy[i].S-xy[j].S);
edges[now]={k+l,i,j};
now++;
}
}
sort(edges,edges+now,[](consttd&l,consttd&r){returnget<0>(l)<get<0>(r);});
REP(i,now){
uf.unite(get<1>(edges[i]),get<2>(edges[i]));
if(uf.same(n,n+1)){
cout<<sqrt(get<0>(edges[i]))/2<<endl;
break;
}
}
}
Recommended Posts