题目比较简单(可能想让我们快速AK然后出去跨年O(∩_∩)O哈哈~太贴心了),18minAK(老年手速)
AcWing 4788. 最大数量
原题连接
签到题
一个map搞定
#include <bits/stdc++.h>
using namespace std;
#define int long long
signed main()
{
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
int n;
std::cin >> n;
map<std::pair<int,int>,int> mp;
int res = 0;
for (int i = 0; i < n; i ++) {
int h,m;
std::cin >> h >> m;
mp[{h,m}]++;
res = std::max(res,mp[{h,m}]);
}
std::cout << res << "\n";
return 0;
}
AcWing 4789. 前缀和序列
原题连接
题解
考查前缀和的使用。用两个前缀和分别维护序列a以及排序后的序列b即可
#include <bits/stdc++.h>
using namespace std;
#define int long long
signed main()
{
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
int n;
std::cin >> n;
std::vector<int> a(n + 1),s1(n + 1);
for (int i = 1; i <= n; i ++) {
std::cin >> a[i];
s1[i] = s1[i - 1] + a[i];
}
auto b = a;
sort(b.begin(), b.end());
std::vector<int> s2(n + 1);
for (int i = 1; i <= n; i ++) {
s2[i] = s2[i - 1] + b[i];
}
int m;
std::cin >> m;
while (m -- ) {
int op,l,r;
std::cin >> op >> l >> r;
if (op == 1) {
std::cout << s1[r] - s1[l - 1] << "\n";
} else {
std::cout << s2[r] - s2[l - 1] << "\n";
}
}
return 0;
}
AcWing 4790. 买可乐
原题连接
题解
枚举,按照题意实现。由于题目未说明c元/箱,每箱n瓶的是否比单买n瓶划算(实际生活中应该不会出现单买比整箱划算)以防万一,也要考虑此情况。 还要注意,不够整箱时,以整箱购买是否比单买划算。
#include <bits/stdc++.h>
using namespace std;
#define int long long
signed main()
{
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
int c,d;
std::cin >> c >> d;
int n,m;
std::cin >> n >> m;
int k;
std::cin >> k;
if (k >= n * m) {
std::cout << "0\n";
return 0;
}
int t = n * m - k;
if (c >= d * n) {
std::cout << d * t << "\n";
} else {
if (t % n) {
int sum = t / n + 1;
int s1 = t / n,s2 = t - s1 * n;
std::cout << std::min(s1 * c + s2 * d,sum * c);
} else {
int sum = t / n;
std::cout << sum * c << "\n";
}
}
return 0;
}