【模拟】需要注意的一些事情

文章列举了参加CCCC和蓝桥杯编程竞赛时应注意的几点,包括避免格式错误,规范输入输出,正确处理循环和边界问题,结构体比较,输入输出加速技巧,以及面对特殊排序需求和DFS错误时的解决策略。

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

自我感觉玛力不足。。思维也挺拉的,列出一些事项需要注意。

快CCCC和蓝桥杯了

CCCC会有格式错误这种东西,就是行末多输出空格算错。

蓝桥杯不是很清楚,但是一定要规范输入输出,行末不要多输出空格。

1.一般循环模拟的题。原则就是不能留到下一次循环来检测,自己本次循环完就检查边界问题。(因为如果下次检测。while头部就会有一堆条件判断,很烦的)

2.结构体多属性比较

bool cmp(rec a,rec b){
	if (a.cnt != b.cnt) return a.cnt > b.cnt;
	return a.ss < b.ss;
} 

 3.局部变量字符串(string)如果申请了,没有赋值空,会有一些乱码在里面。(其实和整型局部变量一样的道理)

4.输入输出加速

std::ios::sync_with_stdio(false);
	std::cin.tie(0); 

5.CCCC喜欢整一些什么按照字典序排序的东西:字符串字典序不多说了,结构体排序也不用多说了,但是如果给你一些整数数组,按照数组内每一个元素的字典序来排序,是比较蛋疼的。

(比如数组 a[]={0 4 9 1} b[]={0 4 8 1} c={1 1 1})

思路就是 数组按照vector来存储,然后再额外开一个vector来存放每一个vector的头部指针。

然后定义一个cmp函数,来进行比较。

下面是cmp的函数(按照字典序升序来排列的)(写的很棒。之前没有见过玩的这么骚的....)

bool cmp(vector<int>*a,vector<int>*b){
	int lena=a->size();
	int lenb=b->size();
	for(int i=0,j=0;i<lena && j<lenb;i++,j++){
		if(a[i]<b[j])return true;
		if(a[i]>b[j])return false;
	}
	if(lena<lenb)return true;
	else return false;
	
}
	rep(i,0,tmp){
		dfd(ans[maxlen][i],i);
		//vector<int>dd[10007]; 
		anss.push_back(&dd[i]);//取dd[i]的头部地址扔进去 
	}
	sort(anss.begin(),anss.end(),cmp);//自定义排序 
	//输出 
	for(vector<int>::iterator it=anss[0]->begin();;){
		cout<<*it;
		it++;
		if(it!=anss[0]->end())cout<<" ";
		else break;
	}

6.关于dfs自己犯的一些nt错误

1.忘记恢复环境 2.那个题dfs(i,j)的时候表示第i行第j列。参数是dfs(int x,int y),那么x应该注意小于等于行数,y小于等于列数。我写反了,调了半天。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值