C题
前示链向星

#include <bits/stdc++.h>
using namespace std;
int fa[200005], siz[200005], vis[200005], f[200005];
vector<int> e[200005], le;
struct edge
{
    int sz, sum;
} a[200005];
int len = 0;
int cmp(edge x, edge y)
{
    return x.sum < y.sum;
}
int main()
{
    long long n;
    cin >> n;
    for (int i = 1; i <= n - 1;i++)
    {
        long long x, y;
        cin >> x >> y;
        e[x].push_back(y);
        e[y].push_back(x);
        siz[x]++;
        siz[y]++;
    }
    long long k = 0;
    for (int i = 1; i <= n; i++)
    {
        if (siz[i] == 1)
        {
            k++;
            le.push_back(i);
            fa[i] = e[i][0];
            f[e[i][0]]++;
        }
    }
    long long ans = (k +1)/ 2;
    cout << ans << endl;
    for (int i = 0; i <= k -1; i++)
    {
        a[++len] = {le[i], f[fa[le[i]]]};
    }
    sort(a + 1, a + len + 1, cmp);
    for (int i = 1; i <= k / 2; i++)
    {
        cout << a[i].sz << " " << a[k - i + 1].sz << endl;
    }
    if (k & 1)
    {
        cout << a[1].sz << " " << a[k / 2 + 1].sz << endl;
    }
    return 0;
}

D题

#include <bits/stdc++.h>
using namespace std;
int main()
{
    string a,b;
    cin>>a>>b;
    int x1,f1,s1,x2,f2,s2,z1,z2;
    x1 = (a[0]-'0')*10+a[1]-'0';
    f1 = (a[3]-'0')*10+a[4]-'0';
    s1 = (a[6]-'0')*10+a[7]-'0';
    z1 = x1*3600+f1*60+s1;
    x2 = (b[0]-'0')*10+b[1]-'0';
    f2 = (b[3]-'0')*10+b[4]-'0';
    s2 = (b[6]-'0')*10+b[7]-'0';
    z2 = x2*3600+f2*60+s2;
    cout<<fabs(z2-z1)<<endl;
    return 0;
}

F题

#include <iostream>
#include<string.h>
using namespace std;
int m,n,k;
int a[5001][5001];
int gong(int a,int b) ///最小公倍数
{
    int c,s=a*b;
    while(1)
    {
        if(a%b==0)
        {
            c=b;
            break;
        }
        else{
            c=b;
            b=a%b;
            a=c;
        }
    }
    return s/c;
}
int main()
{

    memset(a,0,sizeof(a));

    for(int i=1;i<=5000;i++)
    {
        for(int j=1;j<=5000;j++)
        {
            a[i][j]=gong(i,j);
            //a[i][j]=max(max(a[i-1][j],a[i][j-1]),gong(i,j));///对应位置最大值
        }
    }
    cin>>m>>n>>k;
   long long  int s=0;
   if(k==1)
   {
        for(int i=k;i<=m;i++)
    {
        for(int j=k;j<=n;j++)
        {

            s+=a[i][j];///从a[k][k]开始取值
        }

    }
   }else
    for(int i=k;i<=m;i++)
    {
        for(int j=k;j<=n;j++)
        {

            a[i][j]=max(max(a[i-1][j],a[i][j-1]),a[i][j]);
            s+=a[i][j];///从a[k][k]开始取值
        }

    }
    cout << s << endl;
    return 0;
}