ccf csp第二题前缀和优化
n个ti变化
其中格式是 1 ti或者2 ti 分别表示拉长ti和逆时针旋转ti
m个查询
其中格式是 ti到tj的变化(be en) x y初始坐标
输出格式
每个查询x y之间空格,查询\n
时间复杂度On
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
int n,m;
scanf("%d%d",&n,&m);
double a[n+1]={0};
double k[n+1];
for(int i=0;i<n+1;i++){
k[i]=1;
}
double a1,a2;
for(int i=1;i<n+1;i++){
scanf("%lf",&a1);
scanf("%lf",&a2);
if(a1==1){
k[i]=k[i-1]*a2;
a[i]=a[i-1];
}else{
a[i]=a[i-1]+a2;
k[i]=k[i-1];
}
}
int be,en;double x,y;
for(int i=0;i<m;i++){
scanf("%d%d%lf%lf",&be,&en,&x,&y);
double kc=k[en]/k[be-1];
x*=kc;
y*=kc;
double ac=a[en]-a[be-1];
int temp=x;
x=x*cos(ac)-y*sin(ac);
y=temp*sin(ac)+y*cos(ac);
printf("%f %f\n",x,y);
}
}