T1016(苏舜)

A. 有序序列合并

把两个数组的数全部输入到一个数组,然后对这个数组进行全排列。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<algorithm>
using namespace std;
intmain() {
    intm, n;
    cin >> m >> n;
    inta[2010], b[1010];
    for(inti = 0; i < m; i++) {
        scanf("%d", &a[i]);
    }
    for(inti = 0; i < n; i++) {
        scanf("%d", &a[m + i]);
    }
    sort(a, a + m + n);
    for(inti = 0; i < m + n; i++) {
        cout << a[i]<<" ";
    }
    return0;
}

B.Dragon:

将数组从大到小排列,然后把数组转化为数字

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<cstdio>
#include<algorithm>
using namespace std;
bool cmp(inta, intb) {
    returna > b;
}
intmain() {
    inta[5];
    while(cin >> a[0]) {
        for(inti = 1; i < 4; i++) {
            cin >> a[i];
        }
        sort(a, a + 4, cmp);
      
    intsum = 0;
    for(inti = 0; i < 4; i++) {
        sum = sum * 10+ a[i];
    }
    cout << sum<<endl;
    }
    return0**;**
}

C.花样方阵:

用一个二维数组存放,然后计算每一组的最大值。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include<algorithm>
using namespace std;
intmain() {
    intT;
    cin >> T;
    while(T--) {
        intn;
        inta[110][5];
        cin >> n;
        for(inti = 0; i < n; i++) {
            for(intj = 0; j < 4; j++) {
                cin >> a[i][j];
            }
        }
        intb[110];
        intmax = 0;
        for(inti = 0; i < n; i++) {
            b[i] = abs(a[i][2] - a[i][0]) + abs(a[i][3] - a[i][1]);
            if(max < b[i])max = b[i];
        }
        cout << max<<endl;
    }
1.  return0;
}

D.不重复数字:

由于set有自动去重的功能,所以我选择用了unordered_set

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<iostream>
#include<unordered_set>
#include<cstdio>
using namespace std;
unordered_set<int>st;
intmain() {
    intT, n , x;
    cin >> T;
    while(T--) {
        st.clear();
        cin >> n;
        for(inti = 0; i < n; i++) {
            scanf("%d", &x);
            if(st.find(x) == st.end()) {
                cout << x <<" ";
                st.insert(x);
            }
        }
        cout << endl;
    }
    return0;
}

E.小H和迷宫

将数组排序,求最少剩余多少,然后用总的减去剩余的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<bits/stdc++.h>
using namespace std;
intmain() {
    longlongn;
    doublea[4];
    cin>>n>>a[1]>>a[2]>>a[3];
    longlongnn=n;
    sort(a+1,a+4);
 for(inti = 3; i > 0; i--) {
     nn = nn - nn*a[i]/100;
 }
    printf("%lld\n",n-nn);
    return0;
}