Skip to content

2026夏组队训练赛第十一场

A. Adjusting Drones

cpp
#include <bits/stdc++.h>
using namespace std;

#define debug(x) cout << #x << '=' << x << '\n';

void solve() {
    int n, k;
    cin >> n >> k;

    vector<int> cnt(n * 4 + 1);
    for (int i = 1; i <= n; i ++) {
        int x;
        cin >> x;
        cnt[x] ++;
    }

    int ans = 0;
    int tmp = 0;
    int base = 0, add = 0;
    for (int i = 1; i <= n * 4; i ++) {
        //debug(tmp);
        if (base == 0) {
            if (cnt[i] > k) base = cnt[i];
        } else {
            tmp ++;
            if (cnt[i]) add += cnt[i] - 1;
            else {
                if (add) add --;
                else {
                    base --;
                    if (base <= k) {
                        base = 0;
                        ans = max(ans, tmp);
                        tmp = 0;
                        add = 0;
                    }
                }
            }
        }
    }
    cout << ans << '\n';
}

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);

    int t;
    cin >> t;
    while (t --) solve();
}

B. Billion Players Game

cpp
// #pragma GCC optimize("O2,unroll-loops")
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define i64 long long
#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 ll = long long;
using i128 = __int128;
#define endl '\n'
#define vpii vector<pii>
#define vvpii vector<vector<pii>>
#define vvi vector<vector<int>>
#define pqpii priority_queue<pii, vector<pii>, greater<pii>>
#define pqi priority_queue<int,vector<int>, 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) (int)(x).size()
#define mp make_pair
#define INF 1e9
#define exp 1e-12
const int N=1e9;
const int mod=998244353;
void slove(){
    int n,l,r;
    cin>>n>>l>>r;
    vi a(n);
    for(int i=0;i<n;i++) cin>>a[i];
    sort(all(a));
    int ans=0;
    for(int i=0;i<n/2;i++){
        int ll=a[i],rr=a[n-i-1];
        if(ll<l&&rr<l)ans+=l*2-ll-rr;
        else if(ll>r&&rr>r)ans+=rr+ll-2*r;
        else ans+=rr-ll;
    }
    if(n%2){
        if(a[n/2]<l)ans+=l-a[n/2];
        else if(a[n/2]>r)ans+=a[n/2]-r;
    }
    cout<<ans<<endl;
}
signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    //freopen("in.txt","r",stdin);
    //freopen("test/2.in","w",stdout);
    //cout<<fixed<<setprecision(10);
    int t=1;
    cin>>t;
    while(t--){
        slove();
    }
    return 0;
}

C. Chamber of Secrets 2

cpp
#include <bits/stdc++.h>
using namespace std;

void solve() {
    int n, m;
    cin >> n >> m;
    int len = n * m / 2;

    vector<vector<int>> a(n, vector<int> (m));
    for (int i = 0; i < n; i ++) {
        for (int j = 0; j < m; j ++) {
            cin >> a[i][j];
        }
    }

    sort(a.begin(), a.end());

    if (n == 1) {
        for (int i = 0; i < m / 2; i ++) cout << a[0][i] << ' ';
        cout << '\n';
        return;
    }

    if (n % 2 == 0) {
        for (int i = 0; i < n; i += 2) {
            for (int j = 0; j < m; j ++) {
                cout << a[i][j] << ' ';
            }
        }
        cout << '\n';
        return;
    }

    vector<int> vis(n);
    int cur = 0;
    vis[cur] = 0;
    for (int _ = 0; _ < n; _ ++) {
        // cout << "cur = " << cur << '\n';
        for (int i = 0; i < m / 2; i ++) cout << a[cur][i] << ' ';
        for (int i = 0; i < n; i ++) if (!vis[i]) {
            bool ok = 1;
            for (int j = 0; j < m / 2; j ++) {
                if (a[cur][j + m / 2] != a[i][j]) {
                    ok = 0;
                    break;
                }
            }
            if (ok) {
                vis[i] = 1;
                cur = i;
                break;
            }
        }
    }
    cout << '\n';
}

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);

    int t;
    cin >> t;
    while (t --) solve();
}

D. Dungeon Equilibrium

cpp
#include <bits/stdc++.h>
using namespace std;

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);

    int n;
    cin >> n;

    vector<int> cnt(1001);
    for (int i = 1; i <= n; i ++) {
        int x;
        cin >> x;
        cnt[x] ++;
    }

    int ans = 0;
    for (int i = 0; i <= 1000; i ++) {
        if (cnt[i] >= i) ans += cnt[i] - i;
        else ans += cnt[i];
    }

    cout << ans;
}

E. Expansion Plan 2

cpp
#pragma GCC optimize("O2")
#include <bits/stdc++.h>
#include <complex>
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 bit bitset<N>
#define endl '\n'
void pr(vector<int> a) {
    for (auto i : a)
        cout << i << ' ';
    cout << '\n';
}
const int mod = 998244353;
const int INF = 1e18;
const int N = 129;
int p[N], p2[N];

void init() {}

void solve() {
    int n,q;
    cin>>n>>q;
    string s;
    cin>>s;
    vi sum4(n+1);
    for(int i=0;i<n;i++){
        sum4[i+1]=sum4[i]+(s[i]=='4');
    }
    while(q--){
        int l,r,x,y;
        cin>>l>>r>>x>>y;
        x=abs(x),y=abs(y);
        int s4=sum4[r]-sum4[l-1];
        int s8=r-l+1-s4;
        x-=s8,y-=s8;
        if(max(0ll,x)+max(0ll,y)>s4)cout<<"NO"<<endl;
        else cout<<"YES"<<endl;
    }
}

signed main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    init();

    int t = 1;
    // cin >> t;
    while (t--)
        solve();

    return 0;
}

F. Factory Table

cpp
#include <bits/stdc++.h>

using namespace std;

const int N = 110;
typedef long long LL;
LL a[N];

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0), cout.tie(0);
    int T;
    cin >> T;
    a[0] = 0x3f3f3f3f;
    while (T--) {
        int n;
        cin >> n;
        for (int i = 1; i <= n; ++i) cin >> a[i];
        int t = 0;
        for (int i = 2; i <= n; ++i) if (a[i] <= a[i - 1]) t++;
        if (t == 0) {
            LL d = a[2] - a[1];
            cout << max(d, a[n] / d) << '\n';
        }
        else if (t == 1) {
            for (int i = 2; i <= n; ++i) {
                if (a[i] <= a[i - 1]) {
                    cout << a[i - 1] / (a[i] - 1) << '\n';
                    break;
                }
            }
        }
        else {
            LL d = 0;
            for (int i = 1, cur = 0; i <= n; ++i) {
                if (a[i] <= a[i - 1]) cur = 1;
                else cur++;
                d = max(d, (LL)cur);
            }
            cout << d << '\n';
        }
    }
    return 0;
}

G. Git Gud

cpp
// #pragma GCC optimize("O2,unroll-loops")
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define i64 long long
#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 ll = long long;
using i128 = __int128;
#define endl '\n'
#define vpii vector<pii>
#define vvpii vector<vector<pii>>
#define vvi vector<vector<int>>
#define pqpii priority_queue<pii, vector<pii>, greater<pii>>
#define pqi priority_queue<int,vector<int>, 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) (int)(x).size()
#define mp make_pair
#define INF 1e9
#define exp 1e-12
const int N=1e9;
const int mod=998244353;
void slove(){
    const int n=2.5e5;
    cout<<n<<endl;
    for(int i=1;i<=n;i*=63){
        for(int j=i;j<i*63;j+=i){
            for(int k=(n-j)/(i*63)*(i*63)+j;k>0;k-=i*63)cout<<k<<" "<<i<<endl;
        }
    }
}
signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int t=1;
    //cin>>t;
    while(t--){
        slove();
    }
    return 0;
}

J. Jewels Building

cpp
#pragma GCC optimize("O2")
#include <bits/stdc++.h>
#include <complex>
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 bit bitset<N>
#define endl '\n'
void pr(vector<int> a) {
    for (auto i : a)
        cout << i << ' ';
    cout << '\n';
}
const int mod = 998244353;
const int INF = 1e18;
const int N = 129;
int p[N], p2[N];

void init() {}

void solve() {
    int n, m;
    cin >> n >> m;
    vi a(n), b(m);
    for (int i = 0; i < n; i++) cin >> a[i];
    for (int i = 0; i < m; i++) cin >> b[i];
    vvi dp(n + 1, vi(m + 1));
    dp[0][0] = 1;
    vi p(m+1,INF);
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            if (!dp[i][j]&&p[j]>i)
                continue;
            if (a[i] == b[j])
                dp[i + 1][j + 1] = 1;
            p[j+1]=min(p[j+1],i+b[j]);
        }
    }
    if (dp[n][m]||(p[m]<=n))
        cout << "YES" << endl;
    else
        cout << "NO" << endl;
}

signed main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    init();

    int t = 1;
    cin >> t;
    while (t--)
        solve();

    return 0;
}

L. LFS

cpp
#include <bits/stdc++.h>

using namespace std;

typedef long long LL;
const int MOD = 1000000007;
const int N = 500010;

int pos[N][26], p[N];
LL ps[N][26];
LL freq[N], res[N];

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0), cout.tie(0);
    int n, q;
    cin >> n >> q;
    string s;
    cin >> s;
    for (int i = 1; i <= n; ++i) {
        // cout << '\n';
        memcpy(pos[i], pos[i - 1], sizeof(int) * 26);
        memcpy(ps[i], ps[i - 1], sizeof(LL) * 26);
        pos[i][s[i - 1] - 'a'] = i;
        ps[i][s[i - 1] - 'a']++;
    }
    vector<pair<int, int>> qs(q);
    for (auto &[l, r] : qs) cin >> l >> r;
    for (int i = 0; i < q; ++i) {
        auto &[l, r] = qs[i];
        for (int j = 0; j < 26; ++j) {
            freq[i] = max(freq[i], ps[r][j] - ps[l - 1][j]);
        }
    }
    for (int len = 25; len; --len) {
        for (int i = 1; i <= n; ++i) {
            int &ls = pos[i - 1][s[i - 1] - 'a'];
            if (ls == 0 || i + len > n) p[i] = ls;
            else {
                bool flg = true;
                for (int j = 0; j <= len; ++j) {
                    if (s[ls + j - 1] != s[i + j - 1]) {
                        flg = false;
                        break;
                    }
                }
                if (flg) p[i] = p[ls];
                else p[i] = ls;
            }
        }
        for (int i = 0; i < q; ++i) {
            if (res[i]) continue;
            auto &[l, r] = qs[i];
            for (int j = 0; j < 26; ++j) {
                if (pos[r][j] + len <= r && pos[r][j] >= l && freq[i] == ps[r][j] - ps[l - 1][j] && p[pos[r][j]] < l) {
                    res[i] = len;
                    break;
                }
            }
        }
    }
    for (int i = 0; i < q; ++i) {
        cout << res[i] + 1 << '\n';
    }
    return 0;
}

其他没做的题

  • Hyper Smawk Bros
  • Isaac’s Queries
  • Keygen 3