坑点
从本题开始,加【注意】标题的题目需要复习坑点或者知识点
这道题的坑点在条件判断20分->100分,要注意判断顺序、判断顺序、判断顺序
if (t[lt] > k[lk]) {
ans += 200;
++lt;
++lk;
} else if (t[rt] < k[lk]) {
ans -= 200;
--rt;
++lk;
} else if (t[rt] > k[rk]) {
--rt;
--rk;
ans += 200;
} else if (t[rt] == k[lk]) {
--rt;
++lk;
}
题目原文请移步下面的链接
OI
、贪心
普及+/提高
#include <bits/stdc++.h>
using namespace std;
#define endl '\n';
void best_coder() {
int n, rt, rk, lt, lk;
cin >> n;
vector<int> k(n);
vector<int> t(n);
for (int i = 0; i < n; ++i) {
cin >> t[i];
}
for (int i = 0; i < n; ++i) {
cin >> k[i];
}
sort(t.begin(), t.end(), greater<int>());
sort(k.begin(), k.end(), greater<int>());
long long ans = 0;
rt = n - 1;
rk = n - 1;
lk = 0;
lt = 0;
for (int i = 0; i < n; ++i) {
if (t[lt] > k[lk]) {
ans += 200;
++lt;
++lk;
} else if (t[rt] < k[lk]) {
ans -= 200;
--rt;
++lk;
} else if (t[rt] > k[rk]) {
--rt;
--rk;
ans += 200;
} else if (t[rt] == k[lk]) {
--rt;
++lk;
}
}
cout << ans;
}
void happy_coder() {
}
int main() {
// // 提升cin、cout效率
// ios::sync_with_stdio(false);
// cin.tie(nullptr);
// cout.tie(nullptr);
// 小码匠
best_coder();
// 最优解
// happy_coder();
// 返回
return 0;
}
#include <bits/stdc++.h>
using namespace std;
#define endl '\n';
void best_coder() {
int n, rt, rk, lt, lk;
cin >> n;
vector<int> k(n);
vector<int> t(n);
for (int i = 0; i < n; ++i) {
cin >> t[i];
}
for (int i = 0; i < n; ++i) {
cin >> k[i];
}
sort(t.begin(), t.end(), greater<int>());
sort(k.begin(), k.end(), greater<int>());
long long ans = 0;
rt = n - 1;
rk = n - 1;
lk = 0;
lt = 0;
for (int i = 0; i < n; ++i) {
if (t[lt] > k[lk]) {
ans += 200;
++lt;
++lk;
} else if (t[rt] > k[rk]) {
--rt;
--rk;
ans += 200;
} else if (t[rt] < k[lk]) {
ans -= 200;
--rt;
++lk;
} else if (t[rt] == k[lk]) {
--rt;
++lk;
}
}
cout << ans;
}
void happy_coder() {
}
int main() {
// // 提升cin、cout效率
// ios::sync_with_stdio(false);
// cin.tie(nullptr);
// cout.tie(nullptr);
// 小码匠
best_coder();
// 最优解
// happy_coder();
// 返回
return 0;
}
END