为什么会爆炸
  • 板块灌水区
  • 楼主Sad_Fool
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/7/1 15:57
  • 上次更新2024/7/1 18:47:35
查看原帖
为什么会爆炸
1330396
Sad_Fool楼主2024/7/1 15:57
#include <bits/stdc++.h>
using namespace std;

struct vc {
	vector <string> a;
	int now, id;
} v[1005];

string x[1005], tmp[1005][1005];
struct cmp {
	bool operator()(const vc &a, const vc &b) {
		return tmp[a.id][a.now+1] > tmp[b.id][b.now+1];
	}
};

priority_queue <vc, vector<vc>, cmp> q;

int main() {
	int n, l, sum_L = 0;
	cin >> n;
	for (int i = 1; i <= n; i++) {
		cin >> l; sum_L += l;
		v[i].id = i; v[i].now = 1;
		for (int j = 1; j <= l; j++) {
			cin >> x[j];
			v[i].a.push_back(x[j]);
		}
		for (int j = l; j >= 1; j--) {
			tmp[i][j] = x[j] + '9' + tmp[i][j+1];
		}
		q.push(v[i]);
	}

	for (int i = 1; i <= sum_L; i++) {
		vc p = q.top();
		cout << p.now << "\n";
		cout << p.a[p.now++] << " ";
		q.pop();
		q.push(p);
	}
}

输入样例:

3
1 2
1 100
1 1

是因为我多看了一眼吗

2024/7/1 15:57
加载中...