题目链接:点击打开链接
题意:
思路:
// CodeForces 798D Mike and distribution 运行/限制:62ms/2000ms
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int a[100005], b[100005], id[100005];
bool cmp(int &x, int &y) {
return a[x] > a[y];
}
int main() {
int n;
vector<int> re;
while (scanf("%d", &n) != EOF) {
re.clear();
for (int i = 1; i <= n; i++) {
scanf("%d", &a[i]);
id[i] = i;
}
for (int i = 1; i <= n; i++) {
scanf("%d", &b[i]);
}
sort(id + 1, id + n + 1, cmp);
re.push_back(id[1]);
for (int i = 2; i < n; i += 2) {
re.push_back(b[id[i]] > b[id[i + 1]] ? id[i] : id[i + 1]);
}
if (!(n & 1)) {
re.push_back(id[n]);
}
printf("%d\n", re.size());//n / 2 + 1
for (int i = 0; i < re.size(); i++) {
printf("%d%c", re[i], i == re.size() - 1 ? '\n' : ' ');
}
}
return 0;
}

本文提供CodeForces798D题目的详细解答思路及代码实现,通过自定义排序比较函数来确定最优分配方案。
&spm=1001.2101.3001.5002&articleId=78587705&d=1&t=3&u=b348999bd1654540a78dead42b5cfd28)
518

被折叠的 条评论
为什么被折叠?



