社区讨论
炸 #1#5 #6 70pts 求调
P11232[CSP-S 2024] 超速检测参与者 3已保存回复 15
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 14 条
- 当前快照
- 1 份
- 快照标识符
- @m2r5ot9f
- 此快照首次捕获于
- 2024/10/27 13:35 去年
- 此快照最后确认于
- 2025/11/04 23:42 4 个月前
rt,如下是代码:
CPP#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int t, n, m, L, V, cnt, now, res, d[N], v[N], a[N], p[N];
pair<int, int> q[N];
int main()
{
// freopen("detect5.in", "r", stdin);
// freopen("detect5.out", "w", stdout);
ios::sync_with_stdio(0), cin.tie(0);
cin >> t;
while (t--)
{
cin >> n >> m >> L >> V;
res = cnt = 0, now = 1;
for (int i = 1; i <= n; ++i) cin >> d[i] >> v[i] >> a[i];
for (int i = 1; i <= m; ++i) cin >> p[i];
for (int i = 1; i <= n; ++i)
{
if (lower_bound(p + 1, p + m + 1, d[i]) - p == m + 1) continue;
if (!a[i]) { if (v[i] > V) q[++cnt] = make_pair(L, d[i]); }
else if (a[i] > 0)
{
if (v[i] > V) q[++cnt] = make_pair(L, d[i]);
else
{
int l = d[i] + (V * V - v[i] * v[i] - 1) / (a[i] << 1) + 1;
if (lower_bound(p + 1, p + m + 1, l) - p != m + 1) q[++cnt] = make_pair(L, l);
}
}
else if (v[i] > V)
{
int l = d[i] + (V * V - v[i] * v[i] + 1) / (a[i] << 1);
if (p[lower_bound(p + 1, p + m + 1, d[i]) - p] <= l) q[++cnt] = make_pair(l, d[i]);
}
}
sort(q + 1, q + cnt + 1);
for (int i = 1; i <= m; ++i)
if (p[i + 1] > q[now].first || i == m)
{
while (now <= cnt && q[now].second <= p[i]) ++now;
if (now > cnt) { res += m - i; break; }
}
else ++res;
cout << cnt << ' ' << res << '\n';
}
return 0;
}
回复
共 15 条回复,欢迎继续交流。
正在加载回复...