首页 > 其他分享 >luogu 数据生成

luogu 数据生成

时间:2024-08-12 20:16:27浏览次数:8  
标签:include int luogu system 生成 test txt 数据 out

luogu 数据生成利器

test

test.exe 是指标准程序,不能出错。一般把 gentest 放在一起。

示例 test

#include <bits/stdc++.h>
using namespace std;

int main(){
    int a,b;
    cin>>a>>b;
    cout<<a+b;
    return 0;
}

数据生成

先贴代码:

#include <bits/stdc++.h>
using namespace std;

void printf_green(const char *s)
{
	printf("\033[0m\033[1;32m%s\033[0m\n", s);
}

int main(){
	
	for(int i = 1;i <= 100;i++){// 数据范围 
		
		string str = to_string(i);
		while(str.size() < 3){
			str = "0" + str;
		}
		string aa = "gen > " + str + ".in.txt";
		string bb = "test.exe < " + str +".in.txt > " + str + ".out.txt";
		string ct = "OK on test " + str;
		const char* cc = nullptr;
		const char* dd = nullptr;
		const char* ct1 = nullptr;
		cc = aa.c_str(), dd = bb.c_str(), ct1 = ct.c_str();
		system(cc);
		system(dd);
		printf_green(ct1);
	}
	
	return 0;
}

其中,第六行的 for 循环,表示在同一个 gen 的情况下数据生成个数。

第 \(9\) 行的 while 循环,意在把数字补前导 \(0\)。

随机图生成

随机图生成

代码:

#include <bits/stdc++.h>
using namespace std;
const int N = 1e4 + 5;
int g[N][N];

int main(){
	
	srand(time(0));
	int n = 10, m = 30;// 表示结点个数和边个数
	int relm = 0;
	
	for(int i = 2;i <= n;i++){
		int deg = m/n;// 表示每一条边的出边
		for(int v = 1;v <= deg;v++){
//			cout<<"come\n";
			int u = rand() % (i-1) + 1;
			if(!g[u][i])	relm++;
			g[u][i] = 1;// 可以加权 
			g[i][u] = 1;
		}
	}
	cout<<n<<" "<<relm<<"\n";
	for(int i = 1;i <= n;i++){
		for(int j = i;j <= n;j++){
			if(g[i][j])	cout<<i<<" "<<j<<"\n";// 去重输出 
		}
	}
	return 0;
} 

很明显,如果要这个图中的边不完全是 \(m\),所以需要使用 \(relm\) 这个变量存新 \(m\)。

随机非简单图生成

#include <bits/stdc++.h>
using namespace std;
const int N = 1e4 + 5;
int g[N][N];

struct node{
	int u, v;
};

queue<node> q;

int main(){
	
	srand(time(0));
	
	int n = 10, m = 100;// 表示结点个数和边个数
	for(int i = 2;i <= n;i++){
		int deg = m/n;// 表示每一条边的出边
		for(int v = 1;v <= deg;v++){
			int u = rand() % i + 1;
			q.push({v, i});
		}
	}
	cout<<n<<" "<<q.size()<<"\n";
	while(!q.empty()){
		cout<<q.front().u<<" "<<q.front().v<<"\n";
		q.pop();
	}
	return 0;
}

随机树生成

代码:

#include <bits/stdc++.h>
using namespace std;
const int N = 1e4 + 5;
int g[N][N];

int main(){
	
	srand(time(0));
	int n = 100;// 表示结点个数
	
	for(int i = 2;i <= n;i++){
		int u = rand() % (i-1) + 1;
		g[i][u] = 1;// 可以加权 
		g[u][i] = 1;
	}
	cout<<n<<"\n";
	for(int i = 1;i <= n;i++){
		for(int j = i;j <= n;j++){
			if(g[i][j])	cout<<i<<" "<<j<<"\n";// 去重输出 
		}
	}
	return 0;
} 

就非常简单易懂。对于每个节点,只连接随机的父亲,就可以做到随机树了。

Masonの对拍

朴素考场对拍

#include <stdio.h>
#include <stdlib.h>
#include <iostream>
int main() {
	for (int i = 1;i <= 100;i++) {
		system("gen > test.in.txt");
		system("test1.exe < test.in.txt > a.out.txt");
		system("test2.exe < test.in.txt > b.out.txt");
		std::cout<<i<<"small\n";
		if (system("fc a.out.txt b.out.txt")) {
			system("pause");
			return 0;
		}
	}
}

小数据+大数据对拍

#include <stdio.h>
#include <stdlib.h>
#include <iostream>
int main() {
	for (int i = 1;i <= 100;i++) {
		system("gen1 > test.in.txt");
		system("test1.exe < test.in.txt > a.out.txt");
		system("test2.exe < test.in.txt > b.out.txt");
		std::cout<<i<<"small\n";
		if (system("fc a.out.txt b.out.txt")) {
			system("pause");
			return 0;
		}
	}
	for (int i = 1;i <= 50;i++) {
		system("gen2 > test.in.txt");
		system("test1.exe < test.in.txt > a.out.txt");
		system("test2.exe < test.in.txt > b.out.txt");
		std::cout<<i<<"big\n";
		if (system("fc a.out.txt b.out.txt")) {
			system("pause");
			return 0;
		}
	}
}

BEAUTIFUL の 对拍

#include <bits/stdc++.h>
using namespace std;
void printf_green(const char *s)
{
	printf("\033[0m\033[1;32m%s\033[0m", s);
}

void printf_red(const char *s)
{
    printf("\033[0m\033[1;31m%s\033[0m", s);
}

bool check()
{
	string ans,ans2;
	freopen("a.out.txt","r",stdin);
	char c;
	while(scanf("%c",&c)!=EOF) ans+=c;
	fclose(stdin);
	freopen("b.out.txt","r",stdin);
	while(scanf("%c",&c)!=EOF) ans2+=c;;
	fclose(stdin);
	return ans == ans2;
}
int main() {
	for(int i = 1; i <= 500;i++) {
		system("gen > test.in.txt");
		system("test1.exe < test.in.txt > a.out.txt");
		system("test2.exe < test.in.txt > b.out.txt"); 
		
		if (check()) {
			printf_green("AC on test ");
			string a = to_string(i);
			char ch[1000];
			strcpy(ch, a.c_str());
			printf_green(ch);
			cout<<"\n";
		}
		else{
			printf_red("WA on test ");
			string a = to_string(i);
			char ch[1000];
			strcpy(ch, a.c_str());
			printf_red(ch);
			cout<<"\n";
			return 0;
		}
	}
	printf_green("ALL TESTS RIGHT");
}

标签:include,int,luogu,system,生成,test,txt,数据,out
From: https://www.cnblogs.com/Mason123456/p/18355670

相关文章

  • 你敢相信,我5分钟做了模式植物的GO和KEGG富集分析,并创建了orgDb数据库
    原文教程:我5分钟做了模式植物的GO和KEGG富集分析,并创建了orgDb数据库一边学习,一边总结,一边分享!本期教程获得本教程DataandCode,请在后台回复:20240811。2022年教程总汇2023年教程总汇写在前面我们在前面的教程分享了模式植物构建orgDb数据库|以org.Slycompe......
  • MySQL数据分析进阶(十三)高效的索引
    ※食用指南:文章内容为‘CodeWithMosh’SQL进阶教程系列学习笔记,笔记整理比较粗糙,主要目的自存为主,记录完整的学习过程。(图片超级多,慎看!)【中字】SQL进阶教程|史上最易懂SQL教程!10小时零基础成长SQL大师!!https://www.bilibili.com/video/BV1UE41147KC/?spm_id_from=333.1007.0.......
  • JavaScript数据类型
    JavaScript共有8种数据类型,可以分为两类:基本数据类型和复杂数据类型。1.基本数据类型(PrimitiveTypes)这些数据类型是不可变的,意味着一旦创建了它们的值,就无法更改。Number:用于表示整数和浮点数。例如:42,3.14,-7BigInt:用于表示任意精度的大整数。例如:1234567890123456......
  • mysql数据库:使用Python操作MySQL
    mysql数据库:使用Python操作MySQL安装第三方模块pymysqlpipinstallpymysql操作MySQLimportpymysql#创建连接#需要传入一些参数:#hostmysql所在的主机名或者是域名或者是ip地址#portmysql运行的端口号#ps-aux|grepmysql找到MySQL运行的进程......
  • 使用PaddleHub生成证件照
       飞桨是百度自主研发的开源深度学习平台。包含深度学习核心训练和推理框架、工具组件、基础模型库、端到端开发套件、预测部署和开发训练。    今天要说的PaddleHub是飞桨中的一个工具组件,包含了大量的预训练模型,不需要自己训练可以拿来直接使用,也可以根据自......
  • 巧用Array.forEach:简化循环与增强代码可读性;Array.forEach怎么用;面对大量数据时怎么提
    目录Vue.js中的Array.forEach:简化循环与增强代码可读性一、引言二、Array.forEach()的使用与技巧1、基本语法2、返回值3、使用Array.forEach()的优势4、Array.forEachvsfor循环5、Array.forEach()使用技巧三、Array.forEach()的应用情景1、复杂数据处理2、实时更......
  • 怎样在 SQL 中对一个包含销售数据的表按照销售额进行降序排序?
    在当今数字化商业的浪潮中,数据就是企业的宝贵资产。对于销售数据的有效管理和分析,能够为企业的决策提供关键的支持。而在SQL中,对销售数据按照销售额进行降序排序,是一项基础但极其重要的操作。想象一下,您面前有一张庞大的销售数据表,其中记录了各种产品在不同时间、不同地......
  • 数据结构:链式二叉树(1)
    目录前言一、链式二叉树的遍历1.1前序遍历1.2中序遍历 1.3后序遍历二、层序遍历前言  通过前面关于二叉树的基础知识我们知道链式二叉树分为二叉链和三叉链,本篇主要讲的是二叉链的实现,在此之前,为了方便实现链式二叉树的各个功能,我们需要先手动快速创建一个链......
  • Mysql写入数据错误:General error: 1366 Incorrect string value: '\\xF0\\x9F\\
    这个问题,原因是UTF-8编码有可能是两个、三个、四个字节。Emoji表情或者某些特殊字符是4个字节,而Mysql的utf8编码最多3个字节,所以数据插不进去。我这边是在linux服务器,Mysql的版本是5.7。解决此问题需要修改Mysql的配置文件my.cnf。 总结修改配置:[client]default-character......
  • Box-Cox变换 改善数据的分布特性 实践
    Box-Cox变换改善数据的分布特性实践flyfishBox-Cox变换是一种用于数据变换的技术,常用于改善数据的分布特性。使用Box-Cox变换的情况数据不服从正态分布在许多统计分析和建模方法中,正态性假设是一个重要的前提。例如,线性回归、t检验和ANOVA分析通常假设误差项服从正......