A
水题签到:

#include<bits/stdc++.h>

using namespace std;

int main(){
	string s;
	cin>>s;
	if(s[2] == s[3] && s[4] == s[5]){
		cout<<"Yes"<<endl;
	}
	else 
	cout<<"No"<<endl;
	return 0;
} 

B
水题

#include<bits/stdc++.h>

using namespace std;
typedef long long ll;


int main(){
	ll n;
	cin>>n;
ll res = n / 500;
	ll ans =  n % 500 / 5;
	cout<<res * 1000 + ans * 5<<endl;
	return 0;
} 

C
水题
题意:一开始没看懂题,就是围绕园的最北的那个点的距离,我一直看成了点都在池塘北面,在一条直线上!害

思路:直到题意以后就很容易做了,因为是一个园,所以走过所有的房子的话,肯定是在某俩个房子之间那个距离没有走,加上这个距离就是完整的园了,那么要求距离最小,就需要找出相邻房子之间的最大值,然后减去即可

py蒙佬的。思路差不多

#include <bits/stdc++.h>
#define maxn 200005 
using namespace std;
int a[maxn];
int main(){
	int n,k;
	cin>>k>>n;
	cin>>a[0];
	
	int maxx=-1,sum=0;
	
	for(int i=1;i<n;i++){
		cin>>a[i];
		sum+=abs(a[i]-a[i-1]);
		maxx=max(maxx,a[i]-a[i-1]);

	}
	sum+=abs(abs(a[n-1]-k)+a[0]);
	maxx=max(maxx,abs(abs(a[n-1]-k)+a[0]));
	cout <<sum-maxx<<endl;
	
}

D.
题意:就是一个n个点的图,相邻的点之间有一条边,然后对应的特别的两个点之间也让有一条边,然后让你求就是多少对(i,j)之间的最短距离等于k(k>=1 && k<=n-1)

思路:我们可以看图就是把所有点之间的距离都记录下来,没找到一个不同点之间的最短距离那么就那个数组的距离+1,然后最后输出就行了

#include<bits/stdc++.h>

using namespace std;
const int Max = 1e4 + 5;
int n, x, y, a[Max];

int main() {
    cin>>n>>x>>y;
    for (int i = 1; i <= n - 1; i++) {
        for (int j = i + 1; j <= n; j++) {
            int dis = j - i;
            dis = min(dis, abs(i - x) + abs(j - y) + 1);
            a[dis]++;
        }
    }
    for (int i = 1; i <= n - 1; i++)
       cout<<a[i]<<endl;
    return 0;
}

E
题意:很简单就是无色苹果可变颜色,然后有红苹果跟绿苹果,每种颜色的苹果要求吃的个数有限,让你求能得到的最大的美味值。

思路:我们从红苹果中选取前x个最大的,在绿苹果中选取y个最大的,然后都压入数组或者队列,然后在把无色的苹果都压入数组,最后对这个数组进行排序,然后从中挑选出前x+y个最大的苹果就行了

#include <bits/stdc++.h>
using namespace std;

#define rep(i,n) for (int i = 0; i < (n); ++i)
#define F first
#define S second

using ll = long long;
using P = pair<int,int>;

int main() {
  int x, y, a, b, c;
  cin >> x >> y >> a >> b >> c;
  vector<int> ps(a), qs(b), rs(c);
  rep(i, a) cin >> ps[i];
  rep(i, b) cin >> qs[i];
  rep(i, c) cin >> rs[i];

  sort(ps.rbegin(), ps.rend());
  sort(qs.rbegin(), qs.rend());

  vector<int> v;
  rep(i, x) v.push_back(ps[i]);
  rep(i, y) v.push_back(qs[i]);
  rep(i, rs.size()) v.push_back(rs[i]);
  sort(v.rbegin(), v.rend());

  ll res = 0;
  rep(i, x + y) res += v[i];
  cout << res << endl;

  return 0;
}