正解:单调栈

解题报告:

哇生气辽QAQ本来打了半天feel good都快调出来了然后说换题了QAQ(所以可能那题的代码会过一阵子再放上来了QAQ

不过还是大爆手速打了一通拿到首杀了嘻嘻

美滋滋辽

然后放个传送门先qwq

有一点点解题思想和oil是有点儿像的,就是先把询问和修改放一个结构体里排序,这样当到达某个询问的时候就可以直接解决不用进行其他修改了qwq

然后就是做两次单调栈一次算出往左能看到的角度一次算出往右能看到的角度

然后就欧克辽?

ummm好像是没什么好说的了只要推出了角度计算公式然后按斜率维护栈,然后就差不多了?

顺便是不是可以总结下?就是这种计算几何询问+修改的经常会有放在一个数据结构里然后排序的操作?这样通常都会方便一些呢qwq

over?

代码放下我就做后面的题目辣qwq

啊还有就是这题我不是港说计算几何嘛?其实并没有用到计算几何的方法的说感觉,只是在这个范畴内所以就随手cue了一下qwq

#include <bits/stdc++.h>
using namespace std;
#define rp(i,x,y) for(register int i=x;i<=y;++i)

const double PI=acos(-1.0) ;
+,inf=;
struct node
{
    int x,h;
    bool operator<(const node &R)const{return x<R.x;}
}bd[N<<],stk[N<<];
double ans[N];
int n,q;

inline int read()
{
    ;;
    '))ch=getchar();
    ;
    )+(x<<)+(ch^'),ch=getchar();
    return y?x:-x;
}
inline bool judge(node a,node b,node c)
{
    )c.h=;
    return (long long)(a.h-c.h)*(b.x-c.x)<=(long long)(b.h-c.h)*(a.x-c.x);
}
inline double xl(node a,node b){return atan(1.0*(b.x-a.x)/a.h);}
inline void solve()
{
    ;
    rp(i,,n+q)
    {
        )
        {
             && judge(stk[top-],stk[top-],bd[i]))--top;
            ans[-bd[i].h]+=xl(stk[top-],bd[i]);
            continue;
        }
        ].h<=bd[i].h) || (top>= && judge(stk[top-],stk[top-],bd[i])))--top;
        stk[top++]=bd[i];
    }
}

int main()
{
    int T=read();
    rp(j,,T)
    {
        n=read();rp(i,,n)bd[i].x=read(),bd[i].h=read();
        q=read();rp(i,,q)bd[i+n].x=read(),bd[i+n].h=-i;
        memset(ans,,,bd+n+q+);solve();
        reverse(bd+,bd+n+q+);rp(i,,n+q)bd[i].x=inf-bd[i].x;solve() ;
        printf(,q)printf(/PI) ;
    }
    ;
}
//话说插入代码中编程语言c#和c++看起来有什么区别嘛qwq我有时候选c#有时候选c++感觉界面都一样鸭qwq

这儿!是!代码!QwQ

HDU5033 building 单调栈+计算几何的更多相关文章

  1. HDU5033 Building(单调栈)

    题意是说在水平轴上有很多建筑物(没有宽度),知道每个建筑物的位置与高度.有m个查询,每次查询位置x所能看到的天空的角度. 方法是将建筑与查询一起排序,从左往右计算一遍,如果是建筑物,则比较最后两个(当 ...

  2. HDU 5033 Building(单调栈)

    HDU 5033 Building(单调栈) 题目链接http://acm.hdu.edu.cn/showproblem.php?pid=5033 Description Once upon a ti ...

  3. hdu5033 Building 单调队列

    // hdu5033 Building 单调队列 // // 题目大意: // // n栋大楼,有一个高度h和位置x.如今有一个人高度为0,有q个询问 // 每一个询问有一个位置x,求在位置x能看到天 ...

  4. hdu 5033 Building (单调栈 或 暴力枚举 )

    Description Once upon a time Matt went to a small town. The town was so small and narrow that he can ...

  5. HDU - 5033 Building (单调栈+倍增)

    题意:有一排建筑,每座建筑有一定的高度,宽度可以忽略,求在某点的平地上能看到天空的最大角度. 网上的做法基本都是离线的...其实这道题是可以在线做的. 对于向右能看到的最大角度,从右往左倍增维护每个时 ...

  6. HDU 5033 Building(单调栈维护凸包)

    盗张图:来自http://blog.csdn.net/xuechelingxiao/article/details/39494433 题目大意:有一排建筑物坐落在一条直线上,每个建筑物都有一定的高度, ...

  7. hdu5033 Building (单调栈+)

    http://acm.hdu.edu.cn/showproblem.php?pid=5033 2014 ACM/ICPC Asia Regional Beijing Online B 1002 Bui ...

  8. HDU 5033 Building(北京网络赛B题) 单调栈 找规律

    做了三天,,,终于a了... 11724203 2014-09-25 09:37:44 Accepted 5033 781MS 7400K 4751 B G++ czy Building Time L ...

  9. HDU 5033 Building (维护单调栈)

    题目链接 题意:n个建筑物,Q条询问,问所在的位置,看到天空的角度是多少,每条询问的位置左右必定是有建筑物的. 思路 : 维护一个单调栈,将所有的建筑物和所有的人都放到一起开始算就行,每加入一个人,就 ...

随机推荐

  1. 《JavaScript 秘密花园》

    恰巧今天是传统民间重要的节日之一--七夕节: 被大家挂在嘴上最多的一句话便是:有对象了吗?这不-- 这样的话,那咱就先给new出一个对象吧: var boyfriend = new Object(); ...

  2. codeforces水题100道 第二十四题 Codeforces Beta Round #85 (Div. 2 Only) A. Petya and Strings (strings)

    题目链接:http://www.codeforces.com/problemset/problem/112/A题意:忽略大小写,比较两个字符串字典序大小.C++代码: #include <cst ...

  3. 【Linux基础学习】Ubuntu 常用命令大全

    一.文件目录类 1.建立目录:mkdir 目录名 2.删除空目录:rmdir 目录名 3.无条件删除子目录: rm -rf 目录名 4.改变当前目录:cd 目录名 (进入用户home目录:cd ~:进 ...

  4. WP8.1学习系列(第二十三章)——到控件的数据绑定

    在本文中 先决条件 将控件绑定到单个项目 将控件绑定到对象的集合 通过使用数据模板显示控件中的项目 添加详细信息视图 转换数据以在控件中显示 相关主题 本主题介绍了如何在使用 C++.C# 或 Vis ...

  5. 【cs229-Lecture2】Linear Regression with One Variable (Week 1)(含测试数据和源码)

    从Ⅱ到Ⅳ都在讲的是线性回归,其中第Ⅱ章讲得是简单线性回归(simple linear regression, SLR)(单变量),第Ⅲ章讲的是线代基础,第Ⅳ章讲的是多元回归(大于一个自变量). 本文的 ...

  6. 常用的数据整理的JavaScript库

    Lodash.js https://lodash.com/ Underscore.js https://www.html.cn/doc/underscore/

  7. sencha touch 在线实战培训 第一期 第二节

    2013.12.30晚上8点开的课,仍然有些紧张,开始讲课进度很慢,后面又有些快了... 本期培训一共八节,前三堂免费,后面的课程需要付费才可以观看. 本节内容: 页面实现及跳转控制 跳转容器.路由理 ...

  8. sencha touch 视图(view) activate与deactivate事件探讨

    在sencha touch2.2中采用card布局 之前的需求是考虑show,hide事件发现不可取 http://www.cnblogs.com/mlzs/archive/2013/06/13/31 ...

  9. CF 445A DZY Loves Chessboard

    A. DZY Loves Chessboard time limit per test 1 second memory limit per test 256 megabytes input stand ...

  10. [Tjoi2016&Heoi2016]排序[01序列]

    4552: [Tjoi2016&Heoi2016]排序 Time Limit: 60 Sec  Memory Limit: 256 MBSubmit: 994  Solved: 546[Sub ...