【提高组NOIP2017】时间复杂度 题解 分治系统处理

该博客详细介绍了如何解决NOIP2017提高组中关于时间复杂度的一道题目,通过构建输入、编译和判断三大系统来处理问题。输入系统负责读取数据并提取关键信息,编译系统执行语法检查,而判断系统则根据时间复杂度评估结果。博主提供了主要的函数实现流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原题边幅很长,这里就不贴出来了,落谷有原题,不清楚的可以去看看

------------------------------------------------------------------------------------------------------------

这是一道大模拟,我的方法是建立输入、编译和判断三大系统。

 

这三大系统用三个函数实现,分别是

void Input() //输入系统,专门读取数据并把字符串内的有价值数据提取出来

bool complite() //编译系统,对整组数据进行语法检查,返回true代表语法正确

bool work() //判断系统,符合时间复杂度返回true,否则返回false

 -------------------------------------------------------------------------------------------------------------------

主要流程:

 

所以主函数是这样的:

int main()
{
	cin>>t;
	for(int i=0; i<t ;i++){ //循环t次,每组输入一组数据
	Init(); //该函数的作用为初始化所有数组与全局变量
	Input(); //读入数据
/*编译成功就对数据进行判断并输出”Yes”或”No”,否则输出”ERR”*/
	if(complite()){
		if(work()) cout<<"Yes"<<endl;
		else cout<<"No"<<endl;
	else cout<<"ERR"<<endl;
	}
	return 0;
}


 


 ----------------------------------------------------------------------------------------------------------------------------

那么接下来的任务就很明确了,就是一个个实现三大系统

 

我们读到的数据是字符串,字符串是不方便直接处理的,所以需要输入系统的数据提取功能,把字符串的有用的同类型数据转化成一个个数组存取,具体怎么提取,还要看接下来编译与判断系统需要的是字符串中的哪些信息。在本题目中,我把一行字符串看成由以下四类数据组成。

<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值