2026夏组队训练赛第三场
E. Evil Judges
cpp
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define debug(x) cout << #x << '=' << x << ' ';
#define DL cout << '\n';
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
string s;
ll m;
cin >> s >> m;
int n = s.size();
s = ' ' + s;
ll fi = -1;
for (int i = 1; i <= n; i ++) {
if (m == 0) break;
if (s[i] == 'A') {
if (fi == -1) fi = i;
} else {
if (fi == -1) continue;
if (m >= i - fi) {
m -= i - fi;
swap(s[fi], s[i]);
fi ++;
} else {
swap(s[i], s[i - m]);
break;
}
}
}
ll ans = 0;
ll a = 0;
for (int i = 1; i <= n; i ++) {
if (s[i] == 'A') a ++;
else ans += a;
}
cout << ans;
}F. Friend Meetup
cpp
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define debug(x) cout << #x << '=' << x << ' ';
#define DL cout << '\n';
const double eps = 1e-7;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int n;
cin >> n;
vector<double> X(n), Y(n), v(n);
for (int i = 0; i < n; i ++) {
cin >> X[i] >> Y[i] >> v[i];
}
ll mx = 0;
auto check = [&](double t) ->bool{
double mx1 = -1e18, mx2 = -1e18, mx3 = -1e18, mx4 = -1e18;
for (int i = 0; i < n; i ++) {
mx1 = max(mx1, -X[i] - Y[i] - t * v[i]);
mx2 = max(mx2, -X[i] + Y[i] - t * v[i]);
mx3 = max(mx3, X[i] - Y[i] - t * v[i]);
mx4 = max(mx4, X[i] + Y[i] - t * v[i]);
}
for (int i = 0; i < n; i ++) {
if (t * v[i] - X[i] - Y[i] < mx1) return 0;
if (t * v[i] - X[i] + Y[i] < mx2) return 0;
if (t * v[i] + X[i] - Y[i] < mx3) return 0;
if (t * v[i] + X[i] + Y[i] < mx4) return 0;
}
return 1;
};
double l = 0, r = 1e18;
while (r - l > eps) {
double mid = (l + r) / 2;
if (check(mid)) r = mid;
else l = mid;
}
cout << fixed << setprecision(10) << l;
}H. Heist of the Century
cpp
#pragma GCC optimize("O2")
#include <bits/stdc++.h>
#include <numeric>
using namespace std;
#define int long long
#define i64 int64_t
#define db long double
#define pii pair<int, int>
#define tiii tuple<int, int, int>
#define ull unsigned long long
#define vi vector<int>
using i128 = __int128;
#define vpii vector<pii>
#define vvpii vector<vector<pii>>
#define vvi vector<vi>
#define pqpii priority_queue<pii, vector<pii>, greater<pii>>
#define pqi priority_queue<int, vi, greater<int>>
#define f first
#define s second
#define all(x) (x).begin(), (x).end()
#define pb push_back
#define eb emplace_back
#define sz(x) (x).size()
#define mp make_pair
// #define endl '\n'
const int mod = 998244353;
const int INF = 1e18;
const int N = 5e5 + 5;
void init() {}
int ask(vi a) {
for (auto i : a) cout << i << " ";
cout << endl;
int x;
cin >> x;
if (x == -1 || x == 0) exit(0);
return x;
}
void solve() {
int n;
cin >> n;
int mx = ask(vi(n, 1)) + 1;
int mn = n * 2 - ask(vi(n, n * 2));
if (n == 1) {
ask(vi(n, mx));
return;
}
if (n == 2) {
ask({mx, mn});
ask({mn, mx});
return;
}
vi ans(n);
vi u;
int L = mx - mn;
int R = (L + 1) / 2;
int l = mn + L / 2;
int r = mn + (L + 1) / 2;
for (int i = 0; i < n; i++) {
vi c(n, r);
c[i] = mn;
int a = ask(c);
if (a > R) {
ans[i] = mn + a;
continue;
}
c = vi(n, l);
c[i] = mx;
int b = ask(c);
if (b > R) {
ans[i] = mx - b;
continue;
}
if (L % 2 == 0) {
ans[i] = l;
} else {
ans[i] = l;
u.pb(i);
}
}
for (int i : u) {
vi c = ans;
if (l > 2) {
c[i] = 1;
int x = ask(c);
ans[i] = 1 + x;
} else {
c[i] = 2 * n;
int x = ask(c);
ans[i] = 2 * n - x;
}
}
ask(ans);
}
signed main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
init();
int t = 1;
// cin >> t;
while (t--)
solve();
return 0;
}I. I Don’t Miss Pennies
cpp
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define debug(x) cout << #x << '=' << x << ' ';
#define DL cout << '\n';
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int n;
cin >> n;
vector<int> a(5);
for (int i = 1; i <= n; i ++) {
int x;
cin >> x;
a[x % 5] ++;
}
ll ans = 0;
ans += a[2] * 2;
ll need = min(a[3], a[4]);
ans += need * 2;
a[3] -= need;
a[4] -= need;
ans += a[1];
ll t = a[3] / 2;
ans += t;
a[3] %= 2;
ans -= a[3] * 2;
t = a[4] / 3;
ans += t * 2;
a[4] %= 3;
ans -= a[4];
cout << ans;
}K. Kindergarten Revisited
cpp
#pragma GCC optimize("O2")
#include <bits/stdc++.h>
#include <numeric>
using namespace std;
#define int long long
#define i64 int64_t
#define db long double
#define pii pair<int, int>
#define tiii tuple<int, int, int>
#define ull unsigned long long
#define vi vector<int>
using i128 = __int128;
#define vpii vector<pii>
#define vvpii vector<vector<pii>>
#define vvi vector<vi>
#define pqpii priority_queue<pii, vector<pii>, greater<pii>>
#define pqi priority_queue<int, vi, greater<int>>
#define f first
#define s second
#define all(x) (x).begin(), (x).end()
#define pb push_back
#define eb emplace_back
#define sz(x) (x).size()
#define mp make_pair
// #define endl '\n'
const int mod = 998244353;
const int INF = 1e18;
const int N = 5e5 + 5;
void init() {}
struct Rec {
int x1, y1, x2, y2;
pii p[4];
};
vector<Rec> a;
i128 cross(pii a, pii b, pii c) {
return (i128)(b.f - a.f) * (c.s - a.s) - (i128)(b.s - a.s) * (c.f - a.f);
}
bool check(const vi& id, vi& A, vi& B) {
vpii p;
for (auto x : id) {
for (int k = 0; k < 4; k++) {
p.pb(a[x].p[k]);
}
}
int m = sz(p);
for (int i = 0; i < m; i++) {
for (int j = i + 1; j < m; j++) {
if (p[i] == p[j]) continue;
A.clear();
B.clear();
bool flag = true;
for (auto x : id) {
bool pos = false, n = false;
for (int k = 0; k < 4; k++) {
i128 v = cross(p[i], p[j], a[x].p[k]);
if (v > 0) pos = true;
if (v < 0) n = true;
}
if (pos && n) {
flag = false;
break;
}
if (pos) A.pb(x);
else if (n) B.pb(x);
}
if (flag && !A.empty() && !B.empty()) {
return true;
}
}
}
return false;
}
void solve() {
int n;
cin >> n;
a.resize(n);
for (int i = 0; i < n; i++) {
cin >> a[i].x1 >> a[i].y1 >> a[i].x2 >> a[i].y2;
a[i].p[0] = {a[i].x1, a[i].y1};
a[i].p[1] = {a[i].x1, a[i].y2};
a[i].p[2] = {a[i].x2, a[i].y1};
a[i].p[3] = {a[i].x2, a[i].y2};
}
vi st(n);
iota(all(st), 0);
queue<vi> q;
q.push(st);
int ans = 0;
while (!q.empty()) {
vi id = q.front();
q.pop();
if (sz(id) == 1) continue;
vi A, B;
if (!check(id, A, B)) {
cout << "impossible\n";
return;
}
ans++;
q.push(A);
q.push(B);
}
cout << ans << '\n';
}
signed main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
init();
int t = 1;
// cin >> t;
while (t--)
solve();
return 0;
}其他没做的题
- Acorn Quarrels
- Boss Rush
- Cable Pruning
- Draw Your Deck
- Gemstone Dowsing
- Jelly Fusion
- Leaking Santa’s Secrets
- Maki Conveyor Belt