Y
K
N
U
F

U522155 数据生成(小心电脑)

// code by 樓影沫瞬_Hz17
#include <bits/stdc++.h>
using namespace std;
 
#define getc() getchar_unlocked()
#define putc(a) putchar_unlocked(a)
#define en_ putc('\n')
#define e_ putc(' ')
 
using pii = pair<int, int>;
 
template<class T> inline void out(T n) {
	if(n < 0) putc('-'), n = -n;
	if(n > 9) out(n / 10);
	putc(n % 10 + '0');
}
 
const int N = 5e5 + 10;
mt19937 rd(time(0));
vector<string> vec;
 
inline int rdd(int l, int r) {
	return rd() % (r - l + 1) + l; 
}
 
inline string rdstr(size_t len) {
	string t; t.clear();
	for(size_t i = 1; i <= len; i ++) 
		t += char(rdd(33, 126));
	return t;
}
 
vector<int> e[N];
 
inline void build_t(int n) {
	for(int i = 2; i <= n; i ++) {
		if(i >= 200){
			int k = rdd(i - 200, i - 1);
			e[i].push_back(k);
			e[k].push_back(i);
			continue;
		}
		int k = rdd(1, i - 1);
		e[i].push_back(k);
		e[k].push_back(i);
	}
}
 
vector<string> chain;
vector<int> ch[N];
 
inline vector<int> dfs(int u, int f) {
	vector<int> res;
	for(int v : e[u]) {
		if(v == f) continue;
		vector<int> t = dfs(v, u);
		for(int vv : t) {
			ch[vv].push_back(u);
			// res.push_back(vv); // 希望数据变得很震撼就解开这行注释
		}
		res.push_back(t[0]);
	}
	if(e[u].size() == 1) {
		res.push_back(u);
		ch[u].push_back(u);
	}
	return res;
}
 
signed main() {
	#ifndef ONLINE_JUDGE
		freopen("i.ru", "w", stdout);
	#endif
	// 爱护你的电脑吧,小心些
	int n = 200000; // 节点
	int m = 10; // 非树边数
	int L = 100; // 非树边最大长度
	int q = 1000000; // 询问数
	int sz = 4, fu = 6; // 字符串长度 and 浮动(向上浮动)
	for(int i = 0; i <= n; i ++) 
		vec.push_back(rdstr(sz + rd() % fu));
 
	build_t(n);
	dfs(1, 1);
	for(int i = 1; i <= m; i ++) {
		int len = rd() % L + 1;
		for(int j = 1; j <= len; j ++) {
			int no = rd() % n + 1;
			ch[i + n].push_back(no);
		}
	}
 
	int cnt = 0;
	random_shuffle(ch + 1, ch + m + n);
	for(int i = 1; i <= n + m; i ++) {
		if(ch[i].size()) cnt ++;
	}
 
	cout << cnt << '\n';
	for(int i = 1; i <= n + m; i ++) {
		if(ch[i].size()) {
			cout << ch[i].size() << ' ';
			for(int v : ch[i]) {
				cout << vec[v] << ' ';
			}
			en_;
		}
	}
 
	cout << vec[1] << '\n' << q << '\n';
	for(int i = 1; i <= q; i ++ ) {
		int r = rd() % n + 1;
		cout << vec[r] << '\n';
	}
}	
// 星間~ 干渉~ 融解~ 輪迴~ 邂逅~ 再生~ ララバイ~
posted @ 2025-09-20 20:23  樓影沫瞬_17Hz  阅读(14)  评论(0)    收藏  举报