POJ 2991 Crane(區間更新 向量旋轉)

2022-08-15 06:15:17 字數 716 閱讀 5934

題目大意:n個向量首尾相連,每次操作使某個區間中的所有向量都旋轉同樣的角度。每次操作後都回答最後乙個向量的座標。

題目分析:區間維護向量資訊。向量旋**x1=x0*cos(t)-y0*sin(t),y1=x0*sin(t)+y0*cos(t),其中t為旋轉的角度。

**如下:

# include# include# include# includeusing namespace std;

# define mid (l+(r-l)/2)

const int n=10005;

const double pi=acos(-1.0);

double x[n<<2],y[n<<2];

int lazy[n<<2];

int angle[n];

inline void read(int &x)

}inline double f(int x)

inline void pushup(int rt)

inline void pushdown(int rt)

inline void build(int rt,int l,int r)

else

}inline void update(int rt,int l,int r,int l,int r,int a)

else

}int main()

} return 0;

}

POJ 2991 Crane(線段樹 計算幾何)

description 有一台起重機。我們把起重機看作由n條線段依次首尾相接而成。第i條線段的長度是li。最開始,所有的線段都筆直連線,指向上方。現有c條操縱起重機的指令。指令i給出兩個整數si和ai,效果是使線段si和si 1之間的角度變成ao度。其中角度指的是從線段si開始沿逆時針方向旋轉到si...

POJ 2991 Crane(計算幾何 線段樹)

題目位址 題意 你有乙個挖掘機,他的臂由n根小臂組成,最初的時候挖掘機的臂是垂直向上的,然後有n次操作,每次操作告訴你把第a和第a 1根臂之間的角度旋轉為b 不是旋轉角度為b 每次操作之後把最後那個臂的座標輸出 思路 用線段樹去維護每個臂的向量,然後把第a和第a 1個臂之間的角度旋轉為b這個操作就是...

POJ 2991 線段樹區間更新

每個葉子節點儲存每個線段的向量。那麼答案就是線段樹區間和。每次操作就是對向量進行旋轉,線段樹的區間更新加上向量旋轉公式搞定。設有向量 x0,y0 逆時針旋轉a度後的向量為 x1,y1 有 x1 x0 cos a y0 sin a y1 x0 sin a y0 cos a include includ...