对于第一篇题解的做法,如果实现不当(比如归并每棵子树的结果),复杂度会达到 O(n2m)。比如几个小时前我写的做法。
但是我过了。跑得飞快。感觉很误导刚入门的人。
简单造一个菊花就能卡。hack 数据的 generator:
#include<bits/stdc++.h>
using namespace std;
int main()
{
freopen("hack.in","w",stdout);
int n=10000,m=100;
printf("%d %d\n",n,m);
for(int i=2;i<=n;i++)
printf("1 %d %d\n",i,10000);
for(int i=1;i<=m;i++)
printf("%d\n",i);
return 0;
}
请求加一下,谢谢。