Dans de nombreux cas, les illustrations sont efficaces pour résoudre le problème de la programmation concurrentielle. À ce stade, il est souvent plus efficace de modifier la valeur d'entrée. Les interfaces suivantes peuvent être réalisées immédiatement en utilisant jupyter.
Educational Codeforces Round 80 A.Deadline https://codeforces.com/contest/1288/problem/A
Lorsque N, d, x sont des entiers positifs supérieurs ou égaux à 1 et $ d \ leq x
Des exemples de NON et OUI dans l'exemple de problème sont présentés respectivement à gauche et à droite. Cela peut être fait immédiatement en utilisant simplement la fonction matplotlib. Le bleu est la ligne de $ y = n $, le jaune est $ y = \ left \ lceil \ frac {d} {x + 1} \ right \ rceil + x $ et le vert est le tracé avant d'appliquer la fonction de plafond.
En montrant de cette manière, on peut voir que OUI / NON est déterminé par l'existence de l'intersection de la ligne bleue et de la ligne jaune. (Bien sûr, cela s'explique par lui-même car c'est une inégalité ...)
%matplotlib inline
import matplotlib.pyplot as plt
from ipywidgets import interact
import numpy as np
fig, (axL, axR) = plt.subplots(ncols=2, figsize=(10,4))
n,d = 5,11
xaxis = yaxis = 8
x = np.linspace(1, n, num = 100)
y1 = [n] *100
y2 = np.ceil(d / (x + 1) ) + x
y3 = d / (x + 1) + x
axL.plot(x, y1)
axL.plot(x, y2)
axL.plot(x, y3)
axL.set_xlim(0, xaxis)
axL.set_ylim(0, yaxis)
axL.grid(True)
n2,d2 = 5,4
xaxis = yaxis = 8
x2 = np.linspace(1, n2, num = 100)
y21 = [n2] *100
y22 = np.ceil(d2 / (x2 + 1) ) + x2
y23 = d2 / (x2 + 1) + x2
axR.plot(x2, y21)
axR.plot(x2, y22)
axR.plot(x2, y23)
axR.set_xlim(0, xaxis)
axR.set_ylim(0, yaxis)
axR.grid(True)
fig.show()
En utilisant interact, vous pouvez créer un curseur qui déplace n et d de manière variable.
%matplotlib inline
import matplotlib.pyplot as plt
from ipywidgets import interact
import numpy as np
d = 20
n = 20
import math
xaxis = yaxis = 20
nlimit = 20
dlimit = 100
@interact(n=(1, nlimit), d = (1,dlimit))
def f(n, d):
x = np.linspace(1, n, num = 100)
y1 = [n] * 100
y2 = np.ceil(d / (x + 1) ) + (x)
y3 = d / (x + 1) + x
plt.xlabel("x-axis")
plt.ylabel(" y-axis")
plt.plot(x, y1)
plt.plot(x, y2)
plt.plot(x, y3)
plt.xlim(0, xaxis)
plt.ylim(0, yaxis)
plt.grid(True)
plt.figure(figsize=(1,1))
plt.show()