社区讨论
80分求条
P11232[CSP-S 2024] 超速检测参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mhizlujj
- 此快照首次捕获于
- 2025/11/03 18:18 4 个月前
- 此快照最后确认于
- 2025/11/03 18:18 4 个月前
rt,第一问有时答案会多1
CPP#include <bits/stdc++.h>
using namespace std;
#define int long long
#define db long double
const int MAXN=100010;
const db eps=0.0000000001;
int T,n,m,L,V,cnt,ans;
db p[MAXN],s[MAXN],e[MAXN];
int inds,inde;
struct node{
db d,v,a;
};
struct det{
int s,e;
};
node car[MAXN];
det detect[MAXN];
bool cmp(det a,det b){
if(a.e==b.e) return a.s<b.s;
return a.e<b.e;
}
db f(db v0,db v1,db a){
return (v1*v1-v0*v0)/(2*a);
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>T;
while(T--){
cnt=0,ans=0;
cin>>n>>m>>L>>V;
for(int i=1;i<=n;i++){
cin>>car[i].d>>car[i].v>>car[i].a;
}
for(int i=1;i<=m;i++){
cin>>p[i];
}
for(int i=1;i<=n;i++){
if(car[i].a>0){
if(car[i].v<=V){
s[i]=car[i].d+f(car[i].v,V,car[i].a);
e[i]=1e18;
}else{
s[i]=car[i].d,e[i]=1e18;
}
}else if(car[i].a<0){
if(car[i].v<=V){
s[i]=e[i]=1e18;
}else{
s[i]=car[i].d;
e[i]=car[i].d+f(car[i].v,V,car[i].a);
}
}else{
if(car[i].v<=V){
s[i]=e[i]=1e18;
}else{
s[i]=car[i].d,e[i]=1e18;
}
}
}
for(int i=1;i<=n;i++){
inds=(lower_bound(p+1,p+m+1,s[i])-p);
inde=(lower_bound(p+1,p+m+1,e[i])-p-1);
if(inds<=inde && inds<=m){
cnt++;
detect[cnt]={inds,inde};
}
}
sort(detect+1,detect+cnt+1,cmp);
int lst=-1;
for(int i=1;i<=cnt;i++){
if(lst<detect[i].s){
lst=detect[i].e;
ans++;
}
}
cout<<cnt<<' '<<m-ans<<endl;
}
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...