本文整理汇总了C++中NODE::inter方法的典型用法代码示例。如果您正苦于以下问题:C++ NODE::inter方法的具体用法?C++ NODE::inter怎么用?C++ NODE::inter使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类NODE
的用法示例。
在下文中一共展示了NODE::inter方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main()
{
freopen("sequence.in","r",stdin);
freopen("sequence.out","w",stdout);
scanf("%d%d%d%d",&N,&Q,&A,&B);
root=new NODE(1,Q);
pair<NODE*,long double> MIN;
NODE *p;
for (int i=1;i<=N;i++)
{
if (i>1)
if (A<B)
{
MIN=findMin(root);
p=MIN.first;
long double &mid=MID[i];
mid=MIN.second;
Splay(p);
NODE *q0, *q1(p->l), *q2(p->r);
if (mid-p->xl>eps)
q1=new NODE(p->xl,mid,p->a,p->b,p->c,p->l,0);
if (p->xr-mid>eps)
q2=new NODE(mid,p->xr,p->a,p->b,p->c,0,p->r);
if (q1) q1->adjx(A);
if (q2) q2->adjx(B);
q0=new NODE(mid+A,mid+B,0,0,p->inter(mid),q1,q2);
root=q0;
delete p;
} else
root->adjx(A);
double x;
scanf("%lf",&x);
root->adjy(1,-2*x,x*x);
}
MIN=findMin(root);
p=MIN.first;
long double x=MIN.second, y=p->inter(x);
for (int i=N;i;i--)
{
ans[i]=x;
if (x>MID[i]+B) x-=B; else
if (x<MID[i]+A) x-=A; else
x=MID[i];
}
for (int i=1;i<N;i++) printf("%.8f ",(double)ans[i]);
printf("%.8f\n%.8f\n",(double)ans[N],(double)y);
return 0;
}