请求撤下题解 & 请求添加数据
查看原帖
请求撤下题解 & 请求添加数据
118109
whhsteven楼主2022/2/18 17:31

请求撤下这篇题解

这篇题解上说时间复杂度是 O(n2)O(n^2),但实际上大概应该是,固定一个点当 DFS 起点时,每个点都会被走 从起点到它的路径条数 遍。

每一个点向它后面所有点连一条边,这样的边数是 O(n2)O(n^2) 条,但是路径数已经是指数级了。

随便写的数据生成器如下,这篇题解的程序在这样的数据上在我本机大概跑了 170 秒。

#include<bits/stdc++.h>

using namespace std;

int main()
{
	mt19937 rnd(time(0));
	freopen("data.in", "w", stdout);
	puts("50 1000");
	for(int i = 1; i < 50; i++) printf("%d %d %d\n", i, i + 1, rnd() % 100000 + 1);
	int ed = 951;
	for(int i = 50; i; i--) {
		for(int j = i - 2; j; j--) {
			printf("%d %d %d\n", j, i, rnd() % 100000 + 1);
			if(--ed == 0) goto finish;
		}
	}
	finish: ;
	puts("100000");
	for(int i = 1, u, v; i <= 100000; i++) {
		u = rnd() % 50 + 1, v = rnd() % 50 + 1;
		while(u == v) v = rnd() % 50 + 1;
		printf("%d %d\n", u, v);
	}
	return 0;
}

数据有点大,不会上传,麻烦管理员手动随一组 qwq

 

不知道要 at 谁 qaq,各位帮我 at 一下……

2022/2/18 17:31
加载中...