这道题呢,涉及的是线段树的成段更新,这里我们更新的每一段的坐标,由于我们求的是最后一段顶点的坐标,所以我们只需要把所有段的顶点的坐标加起来就是最终的答案。
我们这里用的是向量,那么来了,向量的旋转坐标是怎么变化的呢,这里涉及的是一些数学知识,看下图。

所以呢,向量的坐标变化为:
Vx=cosA*x-sinA*y
Vy=cosA*y+sinA*x
接下来就是手写线段树了,就加了一个懒惰标记,成段跟新[q+1,N]这一大段中所有小段的坐标,
q+1,q+2,...,N.由于我们求的是最后一段的点的坐标,所以我们只需要把[1,N]每一段的坐标
加起来就可以了(可能这里会疑问,怎么可以全部加起来呢,那一定坐标变大了,其实,前面说过,
我们更新的每一段的坐标,这些坐标都对应某一段的起点(0,0),旋转后的坐标也是相对的,有正
有负,所以,最后加起来,一定是最顶点的左边,即sum[1]).大概就这些。
ps:这里给的角度是改变后所处的角度,所以我们还需要算出旋转之后的角度。(英语好真的很重要,题都读不懂gg)
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include