渐近线的计算 - 9
Задача
对于下面的代码,找到渐近线:
#include
using 命名空间 std;
int 主要()
{
int n, m;
矢量<矢量<int span>> > up1(n, 矢量<int>(m));
int ans = 0;
对于 (int i = 1;我<= n;我++)
{
矢量<int> L(m + 1, 1< /span>), R(m + 1, m);
堆栈 <int>q;
对于 (int j = 1;j <= m;j++)
{
同时 (!q.empty() && up1 [i][j] < up1[i][q.top()])
{
R[q.top()] = j - 1;
q.pop();
}
qpush(j);
}
同时 (!q.empty())
q.pop();
对于 (int j = m; j >= 1; j--)
{
同时 (!q.empty() && up1 [i][j] < up1[i][q.top()])
{
L[q.top()] = j + 1;
q.pop();
}
qpush(j);
}
对于 (int j = 1;j <= m;j++)
ans = max(ans, up1[i][j] * (R[j] < span style="color:#666666">- L[j] + 1));
}
cout << ans;
返回 0;
}
1) O(n+m) 2) O(nm) 3) O(n^2*m) 4) O(n*m^2)
Выберите правильный ответ, либо введите его в поле ввода
Комментарий учителя