社区讨论

Q1错误求助

P11232[CSP-S 2024] 超速检测参与者 1已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@m2q9dkdl
此快照首次捕获于
2024/10/26 22:30
去年
此快照最后确认于
2025/11/04 15:58
4 个月前
查看原帖
rt
CPP
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
#define pii pair <int,int>
#define puu pair <ull,ull>
#define pqi priority_queue <int>
const int N=1e5+10,L=1e6+10;
int t,n,m,l,vt,d[N],v[N],a[N],p[N],sum[L],ans1,ans2;
bool vis[L];
bool check(int l,int r){
	return sum[r]>sum[l-1];
}
inline int read(){
	int x = 0, f = 1;
	char ch = getchar();
	while (!isdigit(ch)){
		if (ch == '-')
			f = -1;
		ch = getchar();
	}
	while (isdigit(ch)){
		x = (x << 1) + (x << 3) + (ch ^ 48);
		ch = getchar();
	}
	return x * f;
}

inline void write(int x){
	if (x < 0) putchar('-'), x = -x;
	if (x > 9) write(x / 10);
	putchar(x % 10 + '0');
}
void init(){
	ans1=ans2=0;
	for(int i=1;i<=n;i++) vis[i]=0;
	return ;
}
void solve(){
	init();
	cin>>n>>m>>l>>vt;
	++l;
	for(int i=1;i<=n;i++){
		cin>>d[i]>>v[i]>>a[i];
		++d[i];
	}
	for(int i=1;i<=m;i++){
		cin>>p[i];
		++p[i];
		vis[p[i]]=1;
	}
	for(int i=1;i<=l;i++) sum[i]=sum[i-1]+vis[i];
	for(int i=1;i<=n;i++){
		if(a[i]==0){
			if(v[i]<=vt) continue;
			if(check(d[i],l)==0) continue;
			++ans1;
			//cout<<i<<' ';
		}
		else if(a[i]>0){
			if(v[i]>vt){
				if(check(d[i],l)) ++ans1;
				continue;
			}
			int s=(vt*vt-v[i]*v[i])/(2*a[i])+1;
			if(d[i]+s>l||check(d[i]+s,l)==0) continue;
			++ans1;
			//cout<<i<<' ';
		}
		else{
			if(v[i]<=vt) continue;
			int A=a[i],B=-v[i]*v[i]+vt*vt;
			int s=ceil(1.0*(vt*vt-v[i]*v[i])/(2.0*a[i]))-1;
			if(s<0||d[i]+s>l||check(d[i],d[i]+s)==0) continue;
			++ans1;		
		}
	}
	cout<<ans1<<'\n';
}
int main()
{
	//freopen("detect.in","r",stdin);
	//freopen("detect.out","w",stdout);
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
	cin>>t;
	while(t--) solve();
    return 0;
}

回复

1 条回复,欢迎继续交流。

正在加载回复...