__gcd @ 2020-04-02 20:03:36
首先想说说复杂度的问题
如果知道calc
函数的时间复杂度,那么可不可以计算出总复杂度?这个复杂度是多少?
by __gcd @ 2020-04-02 20:31:05
假如对比一下
P4178
int calc(int u, int dist)
{
summar = 0;
memset(dis, 0, sizeof(dis));
getdis(u, 0, dist);
sort(dis + 1, dis + 1 + summar);
int lef = 1, rig = summar, res = 0;
while(lef <= rig)
{
if(dis[lef] + dis[rig] <= k){res += rig - lef; lef++;}
else rig--;
}
return res;
}
听说这个的总复杂度是
那么本题
void calc(int u, int dist, int w)
{
summar = 0;
memset(dis, 0, sizeof(dis));
getdis(u, 0, dist);
for(int i = 1; i <= summar; i++)
{
for(int j = i + 1; j <= summar; j++)
{
app[dis[i] + dis[j]] += w;
}
}
return ;
}
这个是多少
by chenxinyang2006 @ 2020-04-02 20:31:46
@一只大头 哦,我懂你在说什么了,总复杂度确实是每个点度数平方的和
by chenxinyang2006 @ 2020-04-02 20:32:46
P4178 那个不是
你下面那个复杂度不对吧
by chenxinyang2006 @ 2020-04-02 20:33:02
菊花图会死
by chenxinyang2006 @ 2020-04-02 20:33:15
下面那个实际上是
by __gcd @ 2020-04-02 20:34:50
@chenxinyang2006 那个复杂度写错了QAQ
by chenxinyang2006 @ 2020-04-02 20:36:41
一般复杂度不对的都会死在菊花图,你看看菊花图是不是特别慢就知道复杂度对不对了
by __gcd @ 2020-04-02 20:36:50
@chenxinyang2006 我很想知道下面的那个是怎么算出来的
by __gcd @ 2020-04-02 20:37:25
我们老师就是不讲复杂度QAQ
by chenxinyang2006 @ 2020-04-02 20:41:51
@一只大头 正常写法(上面那个复杂度):
至多只有
计算答案的时候使用双指针,复杂度是 度数 的,每层的度数总和是
所以总复杂度
奇怪的写法(下面的):
求离重心距离的复杂度也是