Codeforces-Round-980-(Div
[[Dashboard - Codeforces Round 980 (Div. 2) - Codeforces)](比赛链接)
A. Profitable Interest Rate
思路:a - x >= b - 2x, 变形一下得 2 * a - b, 最小为0 最大为a 即可
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
typedef pair<int, int> pii;
void solve() {
ll a, b;
cin >> a >> b;
ll t = 2 * a - b;
cout << min(a, max((ll)0, t)) << endl;;
}
int main() {
int t;
cin >> t;
while(t--) solve();
return 0;
}
B. Buying Lemonade
思路:一遍一遍的取,每次遍历取一个,然后为0,就白按一次,然后下次遍历就不按这个。
转换一下,先排个序,遍历就可,细节处理见代码。
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
typedef pair<int, int> pii;
void solve() {
ll n, k;
cin >> n >> k;
vector<ll> a(n);
for(int i = 0; i < n; i++) cin >> a[i];
sort(a.begin(), a.end());
ll ans = k, pre = 0;
for(int i = 0; i < n && k > 0; i++) {
k -= (a[i] - pre) * (n - i);
pre = a[i];
if(k > 0) ans++;
else break;
}
cout << ans << endl;
}
int main() {
int t;
cin >> t;
while(t--) solve();
return 0;
}
C. Concatenation of Arrays
思路:呃 是个贪心,大概猜一猜感觉是先按照较小值排序,较小值相同,按较大值排序。 证明的话(呃还是猜吧
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
typedef pair<int, int> pii;
void solve() {
int n;
cin >> n;
vector<pii> a(n);
for(int i = 0; i < n; i++) {
int l, r;
cin >> l >> r;
a[i] = {l, r};
}
sort(a.begin(), a.end(), [&](auto a, auto b) {
int mna = min(a.first, a.second);
int mxa = max(a.first, a.second);
int mnb = min(b.first, b.second);
int mxb = max(b.first, b.second);
if(mna == mnb) {
return mxa < mxb;
}
return mna < mnb;
});
for(auto i : a) {
cout << i.first << ' ' << i.second << ' ';
}
cout << '\n';
}
int main() {
int t;
cin >> t;
while(t--) solve();
return 0;
}
有能力了再来做D吧(
浙公网安备 33010602011771号