数组(线性表1)

【深基15.例1】询问学号 

#include <iostream>
#include <vector>
using namespace std;

vector<int>num;

int main()
{
	int n, m;
	cin >> n >> m;
	for (int i = 0; i < n; i++) {
		int x;
		cin >> x;
		num.push_back(x);
	}
	for (int i = 0; i < m; i++) {
		int x;
		cin >> x;
		cout << num[x - 1] << endl;
	}


	return 0;
}

【深基15.例2】寄包柜 

#include <iostream>
#include <map>
using namespace std;

map<long long, int>m;

int main()
{
	int n, q;
	cin >> n >> q;
	long long i, j, p, k;
	while (q--) {
		cin >> p >> i >> j;
		if (p == 1) {
			cin >> k;
			m[i * 1000000 + j] = k;
		}
		else {
			cout << m[i * 1000000 + j] << endl;
		}
	}


	return 0;
}

注意:

用map数组查询更加方便

[HNOI2002] 营业额统计 

#include <iostream>
#include <stack>
#include <string>
#include <queue>
#include <list>

using namespace std;
const int maxN = 3e5;
int a[maxN];

int main()
{
    int n;
    cin >> n;
    for (int i = 0; i < n; i++) {
        cin >> a[i];
    }
    int sum = a[0];
    for (int i = 1; i < n; i++) {
        int minN = 1e6;
        for (int j = i - 1; j >= 0; j--) {
            if (abs(a[i] - a[j]) < minN)minN = abs(a[i] - a[j]);
        }
        sum += minN;
    }
    cout << sum << endl;

    return 0;
}

emmm,这道题明明是提高题,为啥我就这么水灵灵的通过了,我还以为我一定是错的。我看评论区的各位大佬做法都好高级。