多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 互聯網 > poj 2991 Crane(線段樹)

poj 2991 Crane(線段樹)

來源:程序員人生   發布時間:2014-10-10 08:00:01 閱讀次數:2926次

題目鏈接:poj 2991 Crane

題目大意:就是有一個機械手臂,有n結,給定每節的長度,一開始為垂直的。有m次操作,每次將x關節變成角度d,并且輸出手臂末端的坐標。

解題思路:點的旋轉公式(r為逆時針的角度):

  • x=x?cos(r)?y?sin(r)
  • y=x?sin(r)+y?cos(r)

沒有做過類似的題目,線段樹每個節點記錄的為每節旋轉的角度以及單節末端的位置。每次旋轉新的角度,需要根據前一個節點的角度和當前節點的角度來計算(因為它不是再旋轉d,而是變成角度d

#include <cstdio> #include <cstring> #include <cmath> #include <algorithm> using namespace std; const double pi = atan(1.0) * 4; #define lson(x) ((x)<<1) #define rson(x) (((x)<<1)|1) const int maxn = 10005; int lc[maxn * 4], rc[maxn * 4], s[maxn * 4], v[maxn * 4]; double xi[maxn * 4], yi[maxn * 4]; void rotate (int u, int deg) { double r = deg * pi / 180; double x = xi[u] * cos(r) - yi[u] * sin(r); double y = xi[u] * sin(r) + yi[u] * cos(r); xi[u] = x; yi[u] = y; s[u] = (s[u] + deg) % 360; v[u] = (v[u] + deg) % 360; } void pushup (int u) { xi[u] = xi[lson(u)] + xi[rson(u)]; yi[u] = yi[lson(u)] + yi[rson(u)]; } void pushdown (int u) { if (s[u]) { rotate(lson(u), s[u]); rotate(rson(u), s[u]); s[u] = 0; } } void build (int u, int l, int r) { lc[u] = l; rc[u] = r; s[u] = v[u] = 0; if (l == r) { xi[u] = 0; scanf("%lf", &yi[u]); return ; } int mid = (l + r) / 2; build (lson(u), l, mid); build (rson(u), mid + 1, r); pushup(u); } int query (int u, int pos) { if (lc[u] == rc[u]) return v[u]; pushdown(u); int mid = (lc[u] + rc[u]) / 2; if (pos <= mid) return query(lson(u), pos); else return query(rson(u), pos); pushup(u); } void modify (int u, int l, int r, int deg) { if (l <= lc[u] && rc[u] <= r) { rotate(u, deg); return; } pushdown(u); int mid = (lc[u] + rc[u]) / 2; if (l <= mid) modify(lson(u), l, r, deg); if (r > mid) modify(rson(u), l, r, deg); pushup(u); } int N, M; int main () { int cas = 0, d, r; while (scanf("%d%d", &N, &M) == 2) { if (cas++) printf(" "); build (1, 0, N-1); while (M--) { scanf("%d%d", &d, &r); r = (query(1, d - 1) + 180 + r - query(1, d)) % 360; modify(1, d, N - 1, r); printf("%.2lf %.2lf ", xi[1], yi[1]); } } return 0; }
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 国产精品v在线播放观看 | 五月婷婷在线视频观看 | 中文字幕免费在线视频 | 欧美一区二区日韩一区二区 | 日本一区二区免费在线观看 | 狠狠干一区 | 亚洲欧美另类色妞网站 | 久热操 | 欧美另类videos粗暴黑人 | 亚洲无线一二三四区 | 亚洲国产99在线精品一区二区 | 国产欧美日韩综合精品一区二区 | 欧美特黄a级高清免费看片 欧美特黄一级aa毛片 | 欧美一区二区三区免费 | 成人自拍小视频 | 中文成人在线 | 国产美女精品三级在线观看 | 国产精品视_精品国产免费 国产精品视频1区 | 国产大片www | 欧美jizzhd极品欧美 | 亚洲国产日韩在线一区 | 五月综合视频 | 日韩亚洲国产综合久久久 | 久久国产精品老人性 | 欧美三级一级 | 亚洲伊人久久一次 | 国产护士资源总站 | 热久久国产欧美一区二区精品 | 免费jizz在线播放 | 宇都宫紫苑在线播放 | jlzzjlzzjlzz亚洲女 | 欧美区在线观看 | 美国激情ap毛片 | 精品一区二区三区无卡乱码 | 国内精品伊人久久 | aⅴ一区二区三区无卡无码 aⅴ在线免费观看 | 大色欧美 | 欧美一区二区aa大片 | 五月婷网| 久久精品看片 | 在线观看视频在线 |