社区讨论
民间数据AC 官方数据80pts
P11232[CSP-S 2024] 超速检测参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @m333stn3
- 此快照首次捕获于
- 2024/11/04 22:15 去年
- 此快照最后确认于
- 2024/11/05 11:39 去年
CPP
#include<bits/stdc++.h>
using namespace std;
//_________________________________________________________________________________________________________________________________________
const int N = 100009;
int n, m, L, V;
struct AC{
int d, v, a;
int l, r;//(l, r)
void calc(){
l = -1, r = -1;
if(a == 0){
if(v > V){
l = d - 1;
r = L + 1;
}
}
else if(a > 0){
if(v > V){
l = d - 1;
r = L + 1;
}
else{
int k = (V * V - v * v) % (a * 2) == 0 ? -1 : 0;
l = (V * V - v * v) / (a * 2) + d + k;
r = L + 1;
}
}
else{
if(v > V){
int k = (V * V - v * v) % (a * 2) == 0 ? 0 : 1;
l = d - 1;
r = (V * V - v * v) / (a * 2) + d + k;
}
}
if(l < 0) l = -1;
if(r > L) r = L + 1;
if(l >= r) l = -1, r = -1;
}
};
struct line{
int l, r;//[l, r]
};
AC c[N];
line l[N];
int p[N];
bool cmp1(AC a, AC b){
return a.l < b.l;
}
bool cmp2(line a, line b){
return a.r < b.r;
}
void doit(){
memset(p, 0, sizeof(p));
scanf("%d%d%d%d", &n, &m, &L, &V);
for(int i = 1; i <= n; i++){
scanf("%d%d%d", &c[i].d, &c[i].v, &c[i].a);
c[i].calc();
}
for(int i = 1; i <= m; i++) scanf("%d", &p[i]);
// sort(c + 1, c + n + 1, cmp1);
int rp = 0;
for(int i = 1; i <= n; i++){
int ll = upper_bound(p + 1, p + m + 1, c[i].l) - p;
int rr = lower_bound(p + 1, p + m + 1, c[i].r) - p - 1;
if(p[ll] < c[i].r && ll <= m) l[++rp] = {ll, rr};
}
sort(l + 1, l + rp + 1, cmp2);
int cnt = 0, ed = -0x3f3f3f3f;
for(int i = 1; i <= rp; i++){
if(l[i].l > ed){
cnt++;
ed = l[i].r;
}
}
printf("%d %d\n", rp, m - cnt);
}
int main() {
// freopen("detect.in","r",stdin);
// freopen("detect.out","w",stdout);
int T;
scanf("%d", &T);
while(T--){
doit();
}
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...