社区讨论
0pts求调
P11232[CSP-S 2024] 超速检测参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mjpy7lwf
- 此快照首次捕获于
- 2025/12/29 00:33 2 个月前
- 此快照最后确认于
- 2026/01/01 15:45 2 个月前
CPP
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
struct node{
double l,r;
}pos[100001];
struct node2{
ll l,r;
}pos2[100001];
ll t,n,m,l,V,d[100001],v[100001],a[100001],cnt,endd,Pos[100001],cal;
bool cmp(node2 x,node2 y){
return x.r<y.r;
}
double find(double x){
ll poss=lower_bound(Pos+1,Pos+m+1,x)-Pos;
if (Pos[poss]==x) return poss;
else return poss-0.5;
}
int main(){
cin>>t;
while (t--){
cin>>n>>m>>l>>V;
cnt=cal=0;
for (ll i=1;i<=n;i++){
cin>>d[i]>>v[i]>>a[i];
if (a[i]==0){
if (v[i]<=V) pos[i].l=pos[i].r=-1;
else pos[i].l=d[i],pos[i].r=l;
}
else if (a[i]<0){
if (v[i]<=V) pos[i].l=pos[i].r=-1;
else{
pos[i].l=d[i];
pos[i].r=(V*V-v[i]*v[i])/2.0/a[i]+d[i];
if (pos[i].r>l) pos[i].r=l;
}
}
else{
if (v[i]>V) pos[i].l=d[i],pos[i].r=l;
else{
double pos1=(V*V-v[i]*v[i])/2.0/a[i];
pos[i].l=d[i]+pos1;
if (pos[i].l>l) pos[i].l=pos[i].r=-1;
else pos[i].r=l;
}
}
}
for (ll i=1;i<=m;i++) cin>>Pos[i];
for (ll i=1;i<=n;i++){
if (pos[i].l==-1) continue;
ll posl=lower_bound(Pos+1,Pos+m+1,pos[i].l)-Pos;
ll posr=upper_bound(Pos+1,Pos+m+1,pos[i].r)-Pos-1;
if (posl<=posr){
pos2[++cal].l=posl,pos2[++cal].r=posr;
cnt++;
}
}
cout<<cnt<<' ';
cnt=0;
sort(pos2+1,pos2+cal+1,cmp);
for (ll i=1;i<=cal;i++){
if (pos2[i].l>endd){
endd=pos2[i].r;
cnt++;
}
}
cout<<cal-cnt<<'\n';
}
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...