POJ_2991 Crane
来源:互联网 发布:淘宝账户存在安全风险 编辑:程序博客网 时间:2024/05/18 00:21
这道题是线段树加计算几何
先说计算几何,一个向量A(a,b)逆时针旋转x度,所得的向量为B(a1,b2);
则,a1+i*b2 = (a+i*b)*(cosx + i* sinx);
可以得到a1 = a*cosx - b*sinx;
b2 = a*sinx +
#include <iostream>#include <cmath>#include <math.h>#define _USE_MATH_DEFINES#define M_PI 3.14159265358979323846#include <cstdio>using namespace std;const int MAX_N = 10005;const int ST_SIZE = (1<<15)-1;int n,c;int L[MAX_N];int S[MAX_N];int A[MAX_N];double vx[ST_SIZE];double vy[ST_SIZE];double ang[ST_SIZE];double prv[MAX_N];void init(int k,int l,int r){ ang[k] = 0.0; vx[k] = 0.0; if(l == r-1) { vy[k] = L[l]; return ; } int chl = k*2+1; int chr = k*2+2; init(chl,l,(l+r)/2); init(chr,(l+r)/2,r); vy[k] = vy[chl] + vy[chr];}void change(int s,double a,int v,int l,int r){ if(s<=l) return ; else{ if(s<r) { int chl = v*2+1; int chr = v*2+2; int m = (l+r)/2; change(s,a,chl,l,m); change(s,a,chr,m,r); if(s<=m) { ang[v] += a; } double s = sin(ang[v]); double c = cos(ang[v]); //计算几何,逆时针旋转v角度 vx[v] = vx[chl] + (c*vx[chr] - s*vy[chr]); vy[v] = vy[chl] + (s*vx[chr] + c*vy[chr]); } }}void solve(){ // cout<<"ok"<<endl; init(0,0,n); //cout<<"ok"<<endl; for(int i=1;i<=n;i++) { prv[i] = M_PI; } for(int i=0;i<c;i++) { int s = S[i]; double a = A[i]/360.0 * 2 * M_PI; change(s,a-prv[s],0,0,n); prv[s] = a;//更新角度 printf("%.2f %.2f\n",vx[0],vy[0]);//总是最上面的点的坐标 }}int main(){ freopen("POJ_2991.txt","r",stdin); while(cin>>n>>c) { for(int i=0;i<n;i++) { cin>>L[i]; } for(int i=0;i<c;i++) { cin>>S[i]>>A[i]; } solve(); }}
b*cosx;
0 0
- POJ_2991 Crane
- POJ_2991 Crane 线段树
- POJ2991--Crane
- poj crane
- poj2991 crane
- POJ2991-Crane
- UVA1611 Crane
- UVA6588 - Crane
- uva1611-Crane
- Crane UVA
- poj 2991 Crane
- POJ 2991 - Crane
- Crane(线段树)
- Crane(线段树)
- POJ 2991 Crane
- HDU 2991 Crane
- poj 2991-Crane
- UVa 1611 Crane
- SQL Server调用WebService
- 经典算法 ~~巴斯卡三角形
- 基础动画CAPropertyAnimation
- Android WebView 与JS的数据交互
- ireport报表系统及与SpringMVC的整合(二)
- POJ_2991 Crane
- Vim - 奇技淫巧
- 核心动画Core Animation
- iostat
- 羊年大吉!
- POJ 1013-Counterfeit Dollar
- watch
- 循环-08. 二分法求多项式单根(20)
- Best Practices for Performance