AtCoder Beginner Contest 072

第一题

水题

#include <iostream>
using namespace std;
int main(){
  int n,m;
  cin>>n>>m;
  if(n>=m){
    cout<<n-m<<endl;
  }
  else{
    cout<<0<<endl;
  }
  return 0;
}

第二题

水题

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 char a[100005],b[100005];
 4 int main(){
 5   cin>>a;
 6   int j=0;
 7   for(int i=0;i<strlen(a);i=i+2){
 8     b[j++]=a[i];
 9   }
10   cout<<b<<endl;
11   return 0;
12 }

第三题

直接找左右相邻的个数相加,然后比较大小就可以.

#include <bits/stdc++.h>
#define N 100005
using namespace std;
int k[N],a[N],b[N];
int main(){
  int n;
  scanf("%d",&n);
  for(int i=0;i<n;i++){
    scanf("%d",&a[i]);
    b[a[i]]++;
  }
  int ma=0;
  for(int i=0;i<n;i++){
    if(a[i]==0)
      k[a[i]]=b[a[i]]+b[a[i]+1];
    else
      k[a[i]]=b[a[i]-1]+b[a[i]]+b[a[i]+1];
    ma=max(k[a[i]],ma);
  }
  printf("%d
",ma);
  return 0;
}

第四题

就是当前位置上的数不能等于这个位置a[i]!=i.

#include <bits/stdc++.h>
#define N 100005
using namespace std;
int a[N];
int main(){
  int n,count=0;
  cin>>n;
  for(int i=1;i<=n;i++){
    cin>>a[i];
  }
  for(int i=1;i<=n;i++){
    if(a[i]==i){
      count++;
      i++;
    }
  }
  cout<<count<<endl;
  return 0;
}
原文地址:https://www.cnblogs.com/zllwxm123/p/7471434.html