0pts全部RE,求条
查看原帖
0pts全部RE,求条
1046844
Bob1101楼主2025/7/29 23:04

所有测试点全部 RE ( 包括样例 )

#include<bits/stdc++.h>
#define ull unsigned long long
#define ll long long
using namespace std;
const int maxn=500005;
const int m=500000;
int n;
struct node{
	int l;
	int r;
	double k;
	double b;
}t[4*maxn];
inline void push_up(int x,double k,double b){
	t[x].k=k;
	t[x].b=b;
}
inline void build_tree(int x,int l,int r){
	t[x].l=l;
	t[x].r=r;
	if(l==r){
		t[x].k=t[x].b=0;
		return;
	} 
	int mid=(t[x].l+t[x].r)>>1;
	int left_x=2*x;
	int right_x=2*x+1;
	build_tree(left_x,l,mid);
	build_tree(right_x,mid+1,r);
}
inline void update_tree(int x,int l,int r,double k,double b){
	int mid=(t[x].l+t[x].r)>>1;
	int left_x=2*x;
	int right_x=2*x+1;
	if(l<=t[x].l&&r>=t[x].r){
		double x0=t[x].l;
		double x1=t[x].r;
		double y0p=t[x].k*x0+t[x].b;
		double y1p=t[x].k*x1+t[x].b;
		double y0=k+x0+b;
		double y1=k+x1+b;
		if(y0>=y0p&&y1>=y1p) push_up(x,k,b);
		else if(y0>=y0p&&y1<=y1p) return;
		else{
			double mi=(x0+x1)/2.0;
			double sec=(b-t[x].b)/(t[x].k-k);
			if(y0>y0p){
				if(sec<=mi) update_tree(left_x,l,r,k,b);
				else{
					update_tree(right_x,l,r,t[x].k,t[x].b);
					push_up(x,k,b);
				}
			}
			else{
				if(sec<=mi){
					update_tree(left_x,l,r,t[x].k,t[x].b);
					push_up(x,k,b);
				}
				else update_tree(right_x,l,r,k,b);
			}
		}
	}
	if(l<=mid) update_tree(left_x,l,r,k,b);
	if(r>mid) update_tree(right_x,l,r,k,b);
}
inline double query_tree(int x,int p,double ans){
	ans=max(t[x].k*(1.0*p)+t[x].b,ans);
	if(t[x].l==t[x].r) return ans;
	int mid=(t[x].l+t[x].r)>>1;
	int tot=0;
	int left_x=2*x;
	int right_x=2*x+1; 
	if(p<=mid) tot=query_tree(left_x,p,ans);
	else tot=query_tree(right_x,p,ans);
	return tot;
}
int main(){
	ios::sync_with_stdio(false);
	cin.tie(NULL),cout.tie(NULL);
	cin>>n;
	build_tree(1,1,m);
	while(n--){
		string opt;
		cin>>opt;
		if(opt=="Project"){
			double s,k,b;
			cin>>s>>k;
			b=s-k;
			update_tree(1,1,m,k,b);
		}
		else if(opt=="Query"){
			int x;
			int ans;
			cin>>x;
			ans=(int)(query_tree(1,x,0)/100.0);
			cout<<ans<<"\n";
		}
	}
	return 0;
}

RE 记录

样例都过不了,但可由样例情况得知update_tree函数中有错误,其余错误未知

救救孩子吧,我只是个新六年级的蒟蒻

2025/7/29 23:04
加载中...