这个错误大家还是注意一下
  • 板块学术版
  • 楼主Doubleen
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/9/29 22:51
  • 上次更新2023/11/2 17:04:35
查看原帖
这个错误大家还是注意一下
56432
Doubleen楼主2023/9/29 22:51

对于多组数据清理数组的问题

案例一 :

for(int i = 1; i <= n; i++){
 	cin >> a[i]; 
}

int x;
cin >> x;
int top = 1, now = a[1];
while(now >= x){
	now &= a[++now];
}
cout << top - 1 << endl;

这里代码是寻找a[1]a[1] & a[2]a[2] & ...& a[r]a[r] 第一个大于 xx 的 rr

一般下 a[n+1]==0a[n + 1] == 0

因此 到 n+1n + 1 时必定会结束循环

但是注意到多组数据 a[n+1]a[n + 1] 不一定为 00

因此需要 在循环前加上 a[n+1]=0a[n + 1] = 0

案例二 :

也是我们最常犯的错误

像bool数组、priority_queue、queue、deque、vector、cnt数组、以及stack等注意清0,当然这种比较容易检查出

对于break的问题

案例:

bool flg = 0;
for(int i = 1; i <= n; i++){
	if( a[i] > x ){
    	puts("NO");
      flg = 1;
    }
}

if(!flg){
	puts("YES");
}

这个是很nt的错误,但是还是有可能会发生,特别是长时间比赛时导致大脑的爆炸的时候。

flg=1flg = 1 后加上 breakbreak 否则可能多次 putsputs

2023/9/29 22:51
加载中...