错题1 错题:章节二 T014

错因:没搞清楚位置关系.

正确思路:画图梳理位置关系,考数学逻辑解决问题.

参考代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,a,b;
    cin>>n>>a>>b;
    if(n-a<=b+1){
        cout<<n-a;
    }else{
        cout<<b+1;
    }

}

错题2 错题:章节二 T019

错因:想的太复杂了,没有找到方法就直接写了.

正确思路:可以从题目知道实际上只需要判断有多个两对, 计算出所有成对的之后再➗2就是最后的结果(因为有四条边).

参考代码:

#include<bits/stdc++.h>
using namespace std;
int a[101];
int main(){
    int n,s=0;
    cin>>n;
    for(int i=0;i<n;i++){
    	int x;
    	cin>>x;
    	a[x]++;
	}
	for(int i=0;i<100;i++){
		s+=a[i]/2;
	}
	cout<<s/2;
	return 0;
}

错题3 错题:章节二 T023

正确思路:暂且设被按下的按钮为xx,则xx~nn的所有灯将被关闭,我们先将他标记,那么在之后的循环中其他按钮的按下不会再改变被标记的状态.

参考代码:

#include<bits/stdc++.h>
using namespace std;
int l[101];
int main(){
    int n,m,b[101];
    cin>>n>>m;
    for(int i=1;i<=m;i++){
        cin>>b[i];
    }
    for(int i=1;i<=m;i++){
        for(int j=b[i];j<=n;j++){
            if(l[j]==0){
                l[j]=b[i];
            }
        }
    }
    for(int i=1;i<=n;i++){
        cout<<l[i]<<" ";
    }
}

错题4 错题:章节二 T036

正确思路:1.1.先判断是否有四条腿,无则直接变成AlienAlien.2.2.判断头身长是否一致,一致则为ElephantElephant, 否则为"BearBear".

参考代码:

#include<bits/stdc++.h>
using namespace std;
int l[6],v[10];
int main(){
    for(int i=1;i<=6;i++){
        cin>>l[i];
        v[l[i]]++;
	}
	for(int i=0;i<10;i++){
		if(v[i]>=4){
			v[i]-=4;
			for(int j=0;j<10;j++){
				if(v[j]==1){
					cout<<"Bear";
					return 0;
				}else if(v[j]==2){
					cout<<"Elephant";
					return 0;
				}
			}
		}
	}
	cout<<"Alien";
	return 0;
}

错题5 错题:章节二 T011

错因:没有梳理什么时候线段会重叠

正确思路:画图理清思路自然能出答案. 经画图时间后发现:左边界的最小值>右边界的最大值的时候(即min(l)<max(r)min(l)<max(r))摄影师才有机会拍到这群人.

参考代码:

#include <bits/stdc++.h>
using namespace std;
int main(){
    int n, x;
    cin >> n >> x;
    int ma = 0;
    int mb = 1000;
    for(int i=0;i<n;i++){
        int a,b;
        cin>>a>>b;
        if(a>b){
        	swap(a,b);
		}
        ma = max(ma, a);
        mb = min(mb, b);
    }
    if(ma>mb){
        cout << -1;
    }else{
        if(x < ma){
            cout<<abs(ma-x);
        }else if(x > mb){
            cout<<abs(mb-x);
        }else{
            cout<<0;
        }
    }
    return 0;
}

错题6 错题:章节二 T033

正确思路:据题意知就三种情况分别为:$$ 124~126~136$$ 利用桶数组计算出所有数出现的次数后,从1开始配对 若没有合法的一组直接cout<<-1,以此如法炮制即可.

参考代码:

#include<bits/stdc++.h>
using namespace std;
int a[8];
int main(){
    int n;
    cin>>n;
    for(int i=0;i<n;i++){
        int x;
        cin>>x;
        a[x]++;
    }
    a[1]=a[1]-a[4];
    a[2]=a[2]-a[4];
    if(a[2]<0||a[1]<0){
        cout<<-1;
        return 0;
    }
    a[1]=a[1]-a[3];
    a[6]=a[6]-a[3];
    if(a[6]<0||a[1]<0){
        cout<<-1;
        return 0;
    }
    if(a[1]==a[2]&&a[2]==a[6]){
        while(a[4]--){
            cout<<1<<" "<<2<<" "<<4<<endl;
        }
        while(a[3]--){
            cout<<1<<" "<<3<<" "<<6<<endl;
        }
        while(a[6]--){
            cout<<1<<" "<<2<<" "<<6<<endl;
        }
    	return 0;
    }else{
        cout<<-1;
        return 0;
    }
}