社区讨论
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 条回复,欢迎继续交流。
正在加载回复...