POJ - 2991

思路:

  向量旋转;

代码:

#include <cmath>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm> using namespace std; #define maxn 400005 const double pi=acos(-1.0); struct TreeNodeType {
int l,r,R,mid,flag; double x,y; void mem()
{
x=,R=;
scanf("%lf",&y);
} void rotate(int R__)
{
double tmp_x=x,tmp_y=y,R_=R__/180.0*pi;
x=tmp_x*cos(R_)-tmp_y*sin(R_);
y=tmp_y*cos(R_)+tmp_x*sin(R_);
}
};
struct TreeNodeType tree[maxn<<]; int n,m; void build(int now,int l,int r)
{
tree[now].l=l,tree[now].r=r,tree[now].flag=;
if(tree[now].l==tree[now].r) { tree[now].mem();return; }
tree[now].mid=l+r>>;build(now<<,l,tree[now].mid),build(now<<|,tree[now].mid+,r);
tree[now].x=tree[now<<].x+tree[now<<|].x,tree[now].y=tree[now<<].y+tree[now<<|].y;
} int query(int now,int to,int x)
{
if(tree[now].l==tree[now].r){int pos=x-tree[now].R;tree[now].R=x;return pos;}
if(to<=tree[now].mid) return query(now<<,to,x);else return query(now<<|,to,x);
} void updata(int now)
{
tree[now<<].flag+=tree[now].flag,tree[now<<|].flag+=tree[now].flag;
tree[now<<].rotate(tree[now].flag),tree[now<<|].rotate(tree[now].flag);
tree[now].flag=;
} void change(int now,int l,int r,int x)
{
if(tree[now].l==l&&tree[now].r==r) {tree[now].flag+=x,tree[now].rotate(x);return;}
if(tree[now].flag) updata(now);if(l>tree[now].mid) change(now<<|,l,r,x);
else if(r<=tree[now].mid) change(now<<,l,r,x);
else change(now<<,l,tree[now].mid,x),change(now<<|,tree[now].mid+,r,x);
tree[now].x=tree[now<<].x+tree[now<<|].x,tree[now].y=tree[now<<].y+tree[now<<|].y;
} int main()
{
int T=;
while(scanf("%d%d",&n,&m)!=EOF)
{
if(T++) printf("\n");
build(,,n);int to,x;
for(;m--;)
{
scanf("%d%d",&to,&x);
change(,to+,n,query(,to+,x));
printf("%.2lf %.2lf\n",tree[].x,tree[].y);
}
}
return ;
}

AC日记——Crane poj 2991的更多相关文章

  1. AC日记——Tree poj 3237

    Tree Time Limit: 5000MS   Memory Limit: 131072K Total Submissions: 9233   Accepted: 2431 Description ...

  2. AC日记——Dividing poj 1014

    Dividing Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 69575   Accepted: 18138 Descri ...

  3. AC日记——pigs poj 1149

    POJ - 1149 思路: 最大流: 代码: #include <cstdio> #include <cstring> #include <iostream> # ...

  4. Crane (POJ 2991)

    //线段树 延迟标签 // #include <bits/stdc++.h> using namespace std; const int maxn=1e4+5; double x[max ...

  5. AC日记——Dining poj 3281

    [POJ-3281] 思路: 把牛拆点: s向食物连边,流量1: 饮料向t连边,流量1: 食物向牛1连边,流量1: 牛2向饮料连边,流量1: 最大流: 来,上代码: #include <cstd ...

  6. AC日记——Two poj 1849

    Two 思路: 树形DP求直径: 答案是边权总和*2-直径: dp[i][1]::以i为根的子树中最长的路径: dp[i][0]::以i为根的子树中次长的路径: 来,上代码: #include < ...

  7. AC日记——Oulipo poj 3461

    Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 37958   Accepted: 15282 Description The ...

  8. POJ 2991 Crane(线段树+计算几何)

    POJ 2991 Crane 题目链接 题意:给定一个垂直的挖掘机臂.有n段,如今每次操作能够旋转一个位置,把[s, s + 1]专程a度,每次旋转后要输出第n个位置的坐标 思路:线段树.把每一段当成 ...

  9. AC日记——codevs1688求逆序对

    AC日记--codevs1688求逆序对 锵炬 掭约芴巷 枷锤霍蚣 蟠道初盛 到被他尽情地踩在脚下蹂躏心中就无比的兴奋他是怎么都 ㄥ|囿楣 定要将他剁成肉泥.挫骨扬灰跟随着戴爷这么多年刁梅生 圃鳋 ...

随机推荐

  1. web相关基础知识4

      一.定位的盒子居中 Css可见性 overflow: hidden;   溢出隐藏   常用在超出盒子之后就隐藏 visibility: hidden;   隐藏元素    隐藏之后还占据原来的位 ...

  2. java线程(4)——线程同步的锁技术

    同步 同步,字面来看,有点一起工作的意思.但在线程同步中,"同"意为协同.互相配合. 比如: A.B两个线程,并不是说两个线程必须同时一起工作,而是说互相配合工作,在某个时间可能线 ...

  3. 一个类似植物大战僵尸的python源码

    # 1 - Import library import pygame from pygame.locals import * import math import random # 2 - Initi ...

  4. NIO--2-代码

    package com.study.nio; import java.io.IOException; import java.net.InetSocketAddress; import java.ni ...

  5. 微信PC端授权页面提示授权入口所在域名为空

    做第三方微信平台的时候做授权页面,用window.open方法从第三方平台页面打开新的授权标签页. 在IE浏览器上出问题,提示如下: 在chrome和firefox浏览器上正常. 搜了一下,发现微信是 ...

  6. 【loj6191】「美团 CodeM 复赛」配对游戏 概率期望dp

    题目描述 n次向一个栈中加入0或1中随机1个,如果一次加入0时栈顶元素为1,则将这两个元素弹栈.问最终栈中元素个数的期望是多少. 输入 一行一个正整数 n . 输出 一行一个实数,表示期望剩下的人数, ...

  7. 【bzoj1086】[SCOI2005]王室联邦 树分块

    题目描述 将一棵n个点的树分为若干“块”,每个块满足:大小在B到3B之间,并且这个“块”添加某个点后连通.求方案. 输入 第一行包含两个数N,B(1<=N<=1000, 1 <= B ...

  8. SMT(SF)

    示例一: uint iPwmDuty; double temp; temp = (double)AdConvert(AN_TEMPERATURE); temp = temp/; iPwmDuty = ...

  9. git使用笔记(二)分支与合并

    By francis_hao    Nov 18,2016 查看分支,* 表示当前所在分支 $ git branch 查看分支和最后一次提交记录 $ git branch -v 新建分支 $ git ...

  10. http get post 参数校验

    spring boot 常见http get ,post请求参数处理   在定义一个Rest接口时通常会利用GET.POST.PUT.DELETE来实现数据的增删改查:这几种方式有的需要传递参数,后台 ...