社区讨论
20pts求条玄关
P11232[CSP-S 2024] 超速检测参与者 1已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mhizs3dp
- 此快照首次捕获于
- 2025/11/03 18:23 4 个月前
- 此快照最后确认于
- 2025/11/03 18:23 4 个月前
CPP
#include<bits/stdc++.h>
#define double long double
#define int long long
using namespace std;
int T;
int n,m,L,V;
int ans1=0,ans2=0;
vector<int> road;
struct CAR{
double l,r;
}car[100005],field[100005];
bool cmp(CAR x,CAR y){
if(x.l!=y.l)return x.l<y.l;
else return x.r<y.r;
}
void all_clear(){
n=0,m=0,L=0,V=0;
memset(car,0,sizeof car);
road.clear();
ans1=0,ans2=0;
}
void work(){
cin>>n>>m>>L>>V;
for(int i=1,d,v,a;i<=n;i++){
cin>>d>>v>>a;
if(v<=V){
if(a<=0){
i--,n--;continue;
}
else{
car[i].l=((V-v)/a)*(V+v)/2+d;
if(car[i].l>L){
i--;n--;continue;
}
car[i].r=L;
}
}
else{
car[i].l=d;
if(a<0)
car[i].r=min(((V-v)/a)*(V+v)/2+d,L);
else
car[i].r=L;
}
}
for(int i=1,p;i<=m;i++){
cin>>p;
road.insert(lower_bound(road.begin(),road.end(),p),p);
}
sort(car+1,car+1+n,cmp);
for(int i=1;i<=n;i++){
if(lower_bound(road.begin(),road.end(),car[i].l)!=road.end() and *lower_bound(road.begin(),road.end(),car[i].l)<=car[i].r){
ans1++;
if(field[ans2].r>=car[i].l and *lower_bound(road.begin(),road.end(),car[i].l)<=field[ans2].r)
field[ans2].l=max(field[ans2].l,car[i].l),field[ans2].r=min(field[ans2].r,car[i].r);
else{
field[++ans2].l=car[i].l;
field[ans2].r=car[i].r;
}
}else
continue;
}
cout<<ans1<<' '<<m-ans2<<'\n';
all_clear();
return;
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
cin>>T;
while(T--)
work();
return 0;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...