#include<bits/stdc++.h>usingnamespace std;
using i32 = int32_t;
using i64 = longlong;
i32 main(){
ios::sync_with_stdio(false), cin.tie(nullptr);
int k;
cin >> k;
int n = (k + 2) * 2, m = n * (n - 2) / 4, c = 2;
cout << n << " " << m << " " << c << "\n";
for (int i = 1; i <= n; i++)
cout << i % 2 + 1 << " ";
cout << "\n";
for (int i = 1, t; i <= n; i++) {
t = i + 2;
if (i & 1) t++;
else t--;
for (; t <= n; t += 2)
cout << i << " " << t << "\n";
}
return0;
}
2|0E. Team Arrangement
假设我们知道分组的方案后,我们把组按照大小排序,然后贪心的选择r较小的即可。
然后考虑如果得到分组方案,因为n最大只有60,所以直接暴搜枚举出来就好了。
#include<bits/stdc++.h>usingnamespace std;
using i32 = int32_t;
using i64 = longlong;
#define int i64using vi = vector<int>;
using pii = pair<int, int>;
constint inf = LLONG_MAX / 2;
i32 main(){
int n;
cin >> n;
vector<pii> a(n);
for (auto &[l, r]: a)
cin >> l >> r;
ranges::sort(a);
vi w(n + 1);
for (int i = 1; i <= n; i++) cin >> w[i];
int res = -inf;
vi p;
auto dfs = [&](auto &self, int m, int x) -> void {
if (m == 0) {
priority_queue<int, vi, greater<>> heap;
int i = 0, ok = 1, sum = 0;
for (auto pi: p) {
while (i < n and a[i].first <= pi)
heap.push(a[i++].second);
for (int j = 0; j < pi and ok; j++) {
if (not heap.empty() and heap.top() >= pi) heap.pop();
else ok = 0;
}
if (ok == 0) break;
sum += w[pi];
}
if (ok) res = max(res, sum);
return;
}
for (int y = x; y <= m; y++) {
p.push_back(y);
self(self, m - y, y);
p.pop_back();
}
};
dfs(dfs, n, 1);
if (res == -inf) cout << "impossible\n";
else cout << res << "\n";
return0;
}
3|0F. Stage: Agausscrab
签到题
#include<bits/stdc++.h>usingnamespace std;
using i32 = int32_t;
using i64 = longlong;
constint mod = 1e9 + 7;
i32 main(){
ios::sync_with_stdio(false), cin.tie(nullptr);
int n;
cin >> n;
vector<string> s(n);
vector<int> a(n);
for (int i = 0; i < n; i++) {
cin >> s[i] >> a[i];
}
string res;
for (int i = 0, r; i < n; i++) {
r = 1;
for (int j = 0; j < n and r <= s.size(); j++) {
if (a[j] > a[i]) r++;
}
while (not s[i].empty() and r > 0)
s[i].pop_back(), r--;
res += s[i];
}
res[0] = res[0] - 'a' + 'A';
cout << "Stage: " << res;
return0;
}
#include<bits/stdc++.h>usingnamespace std;
using i32 = int32_t;
using i64 = longlong;
i32 main(){
ios::sync_with_stdio(false), cin.tie(nullptr);
i64 n, a, b;
cin >> n >> a >> b;
i64 sum = n * (n + 2) * (2 * n + 1) / 8;
for (i64 i = 1; i <= b; i++) {
i64 l = max(1ll, b - i + 1), r = min(a, a - i + 1);
if (l <= r) sum -= r - l + 1;
}
for (i64 i = b + 1; i <= a + 1; i++) {
i64 l = max(1ll, i - b), r = min(n - a, i - 1);
if (l <= r) sum -= r - l + 1;
}
cout << sum;
return0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2023-09-11 2022-2023 ACM-ICPC German Collegiate Programming Contest (GCPC 2022)