社区讨论

TLE求调。。。

P12805[AMPPZ 2019] Frogs参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@mj01n2u2
此快照首次捕获于
2025/12/10 21:27
3 个月前
此快照最后确认于
2025/12/13 12:20
3 个月前
查看原帖
CPP
#include <bits/stdc++.h>
using namespace std;

const int N = 200005;
const int S = 200005;

vector<pair<int, int>> a[N], b[N];
int cnt[S];
int n, Z;
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cin >> Z;
    while(Z--)
    {
        cin >> n;
        memset(cnt, 0, sizeof(cnt));
        for(int i = 1;i <= n;i++)
        {
            a[i].clear();
            b[i].clear();
        }

        for(int i = 1;i <= n;i++)
        {
            int r, s;
            cin >> r >> s;
            int ll = max(1,i-r);
            int rr = min(n,i+r);
            a[ll].push_back({s, 1});
            b[rr + 1].push_back({s, 1});
        }

        int maxx = 0;
        for(int k = 1;k <= n;k++)
        {
            for(auto& p:a[k])
            {
                int ss = p.first;
                cnt[ss]++;
            }
            for(auto& p:b[k])
            {
                int ss = p.first;
                cnt[ss]--;
            }

            int sum = 0, num = 0;
            for(int s = S - 1; s >= 1 && num < 3; s--)
            {
                if(cnt[s] == 0) continue;
                int qwq = min(cnt[s], 3 - num);
                sum += s * qwq;
                num += qwq;
            }
            if(num == 3) maxx = max(maxx, sum);
        }
        cout << maxx << endl;
    }
    return 0;
}

回复

1 条回复,欢迎继续交流。

正在加载回复...