hdu5033Building 单调栈

用Python玩转Iris数据集:从数据加载到可视化分析的完整指南 本文提供了使用Python处理Iris数据集的完整指南,涵盖数据加载、探索性分析、特征工程和可视化呈现等关键步骤。通过Pandas、NumPy、Matplotlib和Seaborn等工具,读者将学习如何从零开始完成一个机器学习项目的数据分析流程,掌握数据科学的核心技能。 阅读详情

http://acm.split.hdu.edu.cn/showproblem.php?pid=5033

好题啊,不得不说是好题,尤其是听cys讲过后,简直茅塞顿开

题意:坐标轴上n个点上有高h的线段,q次查询,每次查询给一个坐标x,问在(x,0)点上看不到线段的视角范围是多少

离线求,讲查询点和线段点整合在一起排个序,求左边看不到线段的角,也就是和左边线段上端点的最大夹角,同方法求右边

求的方法:n^暴力明显不可行,会发现有很多点是不需要的,使用单调栈维护一个上凸包,因为只有上凸包上的点是之后随着x坐标的变大会影响结果的

对于线段点,判断和栈顶两个元素组成的是否为上凸包,不是则把最栈顶出栈,直到找到

对于查询点,如果和栈顶端点的夹角小于栈内第二个元素的夹角,则栈顶出栈,因为排过序之后的x坐标只会越来越大,因此当前夹角小,之后只会更小

反向再求一遍即可

#include<bits/stdc++.h>
#define eps 1e-9
#define PI 3.141592653589793
#define bs 1000000007
#define bsize 256
#define MEM(a) memset(a,0,sizeof(a))
typedef long long ll;
using namespace std;
struct node
{
    double x,h;
    int id,flog;
    bool operator < (const node u)const
    {
        if(x==u.x)
        return flog>u.flog;
        return x<u.x;
    }
}num[200005],sta[200005];
int n,flag;
double ans[200005];
const double pai=180/acos(-1);
double xielv(node u,node v)
{
    return flag*(u.h-v.h)/(u.x-v.x);
}
void solve()
{
    int i,j,tail=0;
    for(i=0;i<n;i++)
    {
        while(tail>1&&xielv(sta[tail-2],num[i])>xielv(sta[tail-1],num[i]))
        tail--;
        if(num[i].flog)
        {
            while(tail>0&&sta[tail-1].h<=num[i].h)
            tail--;
            sta[tail++]=num[i];
        }
        else
        {
            node temp=sta[tail-1];
        //    cout<<temp.h<<" "<<temp.x<<" "<<num[i].h<<" "<<num[i].x<<endl;
        //    cout<<atan(flag*(temp.h-num[i].h)/(temp.x-num[i].x))<<endl;
            ans[num[i].id]+=pai*atan(flag*(temp.h-num[i].h)/(temp.x-num[i].x));
        }
    }
    return ;
}
int main()
{
    int q,T,i,tca=1;
    cin>>T;
    while(T--)
    {
        cin>>n;
        for(i=0;i<n;i++)
        {
            scanf("%lf %lf",&num[i].x,&num[i].h);
            num[i].flog=1;
        }
        cin>>q;
        for(i=n;i<n+q;i++)
        {
            scanf("%lf",&num[i].x);
            num[i].h=0;
            num[i].flog=0;
            num[i].id=i-n;
            ans[i-n]=0;
        }
        n+=q;
        sort(num,num+n);
        flag=-1;
        solve();
        reverse(num,num+n);
        flag=1;
        solve();
        printf("Case #%d:\n",tca++);
        for(i=0;i<q;i++)
        printf("%.12lf\n",180-ans[i]);
    }
    
 }


STM32F407与AD7766实战:如何用SPI+DMA实现高速ADC数据采集(附完整代码) 本文详细介绍了如何利用STM32F407的SPI接口与DMA控制器,高效稳定地驱动24位高精度ADC芯片AD7766,实现高速连续数据采集。通过对比传统中断方式的瓶颈,阐述了SPI+DMA方案如何大幅降低CPU负载,并提供了从硬件设计、CubeMX配置到核心驱动代码的完整实战指南,帮助工程师解决高速ADC数据采集中的性能难题。 阅读详情

相关推荐

RTX 50系列显卡选购指南:从Stable Diffusion到深度学习,哪款最适合你的AI需求?

本文深入分析了RTX 50系列显卡如何满足不同的AI应用需求。针对Stable Diffusion图像生成,强调显存容量是关键;对于大语言模型本地推理,需平衡算力与显存;而深度学习训练则更看重算力效率。文章对比了RTX 5090、5080、5070等型号的核心规格与适用场景,并提供了从入门到专业的实战配置建议,帮助用户根据自身AI工作负载精准选择最具性价比的显卡。

linux6sysadmin的博客 690

hdu 5033(单调栈)

当初比赛的时候本来想着单调栈来着,但是不知道维护的是什么?因为对于查询的点不同的话他们的斜率也会跟着变化,所以后边就没写。 现在知道将查询的各个点也当成一个高度为0的楼,只需维护对于每一栋楼楼顶上的点的斜率。要维护一个从栈底到栈顶斜率一直递增的单调栈就行,那么的话对于他的一个端点就是栈顶元素。因为栈顶元素是斜率最大的。 PS :非常巧妙,当初怎们没有想到。 #incl

Everything can be done! 364

【实验】Linux下完全卸载oracle单实例(亲身体验完整版)

停止oracle数据库服务 停止监听 卸载数据库实例 因为自己懒得再弄dbca图形化界面啥的,直接采用dbca静默删除数据库实例,命令如下 dbca -silent -deleteDatabase -sourcedb orclhq -sid orcl -sysDBAUserName orcl -sysDBAPassword zte [oracle@slave ~]$ dbca -silent ...

萝卜吃鱼914的博客 1945

hdu 5033 ( Building ) 单调栈

题意: 给出建筑物位置与高度,以及人的位置,询问人看到天空的最大角度 思路: 对于每个位置,人的视野受到左侧与右侧楼与这个点相连的直线  , 左侧斜率最小的 以及右侧斜率最大的 两条直线限制,如果暴力枚举显然会T 可以处理为一个栈的形式:  以左侧楼的限制为例:右侧同理  对于每个位置 如果这个位置是楼,就扔进先除去所有栈中比它高度低的, 再以当前点为基准,所描栈中的点,确保栈中点的到当

GameRoad 359

别再花钱买商业软件了!这4款免费DIC工具,从散斑生成到应变分析全搞定

本文介绍了4款免费开源的DIC(数字图像相关技术)工具,涵盖从散斑生成到应变分析的全流程,帮助用户零成本构建专业级DIC工作流。这些工具在精度、算法透明度和生态整合方面具有优势,适用于材料力学和实验力学研究,可替代昂贵的商业软件。

weixin_42525369的博客 168

【工具篇】万字长文拆解 Otter.ai:语音转文字领域的「瑞士军刀」是如何炼成的?(附保姆级教程)

但需要注意,2024年欧盟已出台《AI转录伦理指南》,要求所有录音需获得参与者明确授权。举个真实案例:某硅谷创业团队用Otter.ai记录产品评审会,系统自动标红争议点并生成待办事项,会议效率提升40%。AIGC技术原理、 实时转录解析、 定价策略分析、 语音算法拆解、 多平台兼容测试、 深度学习框架、 空间计算专利。——无论是跨国会议、课堂讲座还是深夜灵感,它都能实时生成带时间戳的文本记录,准确率高达95%。(此处建议插入Otter.ai会议转录动图,展示实时字幕生成效果)(数据来源:综合参考文献整理)

商务合作|问题讨论|交流学习 请联系作者微信,加微信请务必注明来意,博客主页有联系方式 1259

hdu 5033 Building 几何+单调栈

用一个单调栈存一下大楼的编号y

Broken Wings 731

SAE ARP 4761A内容详解

SAE ARP 4761A主要为民用航空系统及设备的安全评估提供指南,帮助制造商和设计者满足FAA的FAR 25.1309等适航标准的要求。该文档旨在为航空器和航空系统设计中涉及的安全评估流程提供一个结构化的框架,并结合一系列工具和方法,如故障树分析(FTA)、依赖图分析(DD)、马尔可夫分析(MA)等,来系统地评估潜在的安全隐患。这一标准不仅适用于大型航空器的设计和评估,还可以应用于各种类型的飞行系统,如无人驾驶飞行器(UAV)和新型的电动垂直起降飞机(eVTOL)。

qq_41854911的博客 3149

hdu5033Building

Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 1724    Accepted Submission(s): 508 Special Judge Problem Description Once upon

Last Order 1179

Claude Code 错误解决方案: Request Timed Out 超时 原因、配置与解决方案

Claude Code 抛出 Request Timed Out 不仅可 能是网络问题,更大概率是 API 高负载或超大响应导致。本文从 默认超时机制出发,拆解三种根因场景,给出 API_TIMEOUT_MS 环境变量调优与任务拆分策略,帮助开发者在保证稳定性的同时 避免误判网络故障。

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 899

3、利用预训练卷积神经网络进行特征提取

本文介绍了如何使用预训练的卷积神经网络(如VGG16)进行图像特征提取,并将提取的特征存储在HDF5数据集中,以便后续用于机器学习模型的训练。文章详细阐述了特征提取的原理、HDF5数据格式的优势、HDF5DatasetWriter类的实现、特征提取流程的代码实现以及实际应用案例。通过该方法,可以在多种图像数据集上高效构建高精度的分类模型。

z2a3b4c5d的博客 114

hdu5033 Building 凸包

题意:在x轴上有许多高楼,有q个询问,询问人在某一点能看到的天空的最大角度。 parse:离线维护一个高度下降的凸包。 #include #include #include #include #include #include #include #include #include #define ll long long #define inf 1<<30 #define eps 1e-8 #

Every day 438

PostgreSQL的学习心得和知识总结(一百二十六)|深入理解PostgreSQL数据库SQL执行时间计算 \timing 和 log_duration的使用和原理

1、参考书籍:《PostgreSQL数据库内核分析》2、参考书籍:《数据库事务处理的艺术:事务管理与并发控制》3、

孤傲小二~阿沐的博客 984

hdu5033 Building (单调栈维护凸包)

hdu5033 Building (单调栈维护凸包) Problem Description Once upon a time Matt went to a small town. The town was so small and narrow that he can regard the town as a pivot. There were some skyscrapers in the t...

1262934560的博客 293

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【HDU】5033 Building 单调栈

传送门:【HDU】5033 Building

poursoul 788

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

HDU 5033 Building(单调栈)

HDU 5033 Building(单调栈) 题目链接http://acm.hdu.edu.cn/showproblem.php?pid=5033 Description Once upon a time Matt went to a small town. The town was so small and narrow that he can regard the town as a piv...

weixin_30483013的博客 89

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

HDU 5033 Building (单调栈)

题意: 给出N幢摩天大楼的位置和高度,有Q次查询,问在某点处能看见天空的角度范围。 分析: 一开始的想法是维护一个单调栈,首先离线数据并排序,然后左右扫两边。单调栈内大楼的高度要递减,然后判断栈顶元素是否比它的前一个更优,如果不是则出栈。但是如果栈顶元素比它前一个优,并不能保证是全局最优的。 正确的维护方法是保证单调栈内的大楼高度递减,而且要使得这些大楼的最高点构成一个类似凸包的形状,或者说是凸包的一部分,然后再判断栈顶元素和它前一个比是否更优,如果不是则出栈。这样最后的栈顶元素就是待查询点在某方向的视角最

fcbruce 1586

HDU - 5033 Building 单调栈(好题)

传送门:HDU 5033 题意:有一排建筑物坐落在一条直线上,每个建筑物都有一定的高度,给出一个X坐标,高度为0,问X位置能看到的视角是多少度,保证X左右有建筑物。 思路:很容易想到用单调栈单调队列什么的去维护,但就是想不出来该怎么维护。。 其实我们应该维护一个相邻两顶点间斜率绝对值单调递增的栈,套路还是单调栈的套路,不过是进出栈的条件变成了斜率的相对大小,然后就是把询问也当建筑物放进去会使

WA是一笔财富 486

hdu5033 Building单调栈

题意 一条直线上有很多房子,房子的信息包括位置和高度,给出一些询问,当有一个人站在某两个房子之间时,能看到的最大的角度(尽可能广阔的天空) 求解 可以很容易想到求解左边最大的仰角,右边最大的仰角,然后用180度减去两者,所以我们对查询排序,离线依次处理从左到右每个查询的向左看最大仰角,从右向左处理每个查询的向右看最大仰角,离线处理的目的是利用已经处理过的查询的信息,从而降低复杂度,首先,对于一

liuzhan214的博客 523

hdu5033Building+计算几何+单调栈

Problem Description Once upon a time Matt went to a small town. The town was so small and narrow that he can regard the town as a pivot. There were some skyscrapers in the town, each located at positi

xtulollipop 1942

HDU - 5033 Building(单调栈)

Building Time Limit: 5000MS   Memory Limit: 262144KB   64bit IO Format: %I64d & %I64u [Submit]   [Go Back]   [Status]   Description Once upon a time Matt went to a smal

小G的ACM之路 722

hdu 5033 Building 单调栈

第一次写单调栈。 本题参考

499

hdu 5033 buiding(单调栈)

hdu 5033 buiding(单调栈) 某年某月某天,马特去了一个小镇。这个小镇如此狭窄,以至于他可以把小镇当作一个枢纽。在镇上有一些摩天大楼,其中一栋位于xi,高度为hi。所有的摩天大楼位于不同的地方。为了简化题目,假设摩天大楼没有宽度。由于摩天大楼如此之高,马特几乎看不到天空。对于马特所在的位置,他想知道他能看到天空的角度范围有多大。假设马特的身高是0。可以保证,对于每个查询,...

146

HDU 5033 Building 暴力+单调栈优化

BuildingTime Limit: 10000/5000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 2603 Accepted Submission(s): 739 Special JudgeProblem Description Once upon a t

绿色健康文艺小清新 350

hdu - 5033 - Building(单调栈)

题意:N 幢楼排成一列(1 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5033 ——>>将楼和人的位置一起按 x 排序。。       从左往右扫,单调栈维护斜率小的。。       从右往左扫,单调栈维护斜率大的。。 #include #include #include using std::sort; const doub

无节操 1417

hdu5033 Building(单调栈)

题目:在横轴上,给出 n 栋楼(只有高度没有宽度)的位置和高度,再给出m个人的位置,问每个人看天空最大的角度是多少。分析:用单调栈+离线查询。 首先可以确定,能影响视野的不一定是两侧最高的楼。确定了这点之后,需要搞清楚什么情况下影响视野的不是最高楼。 只有这样的情况下,右边的人往左看的时候有可能是低楼影响视野。所以我们用单调栈维护一个高度递减但是相邻点斜率绝对值递增的集合,对于这些点右边的人

nbl97 449
上一篇: hdu5492Find a path dp
下一篇: hdu 5963 博弈
jerans
博客等级 码龄10年 54粉丝 255原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值