POJ1654 Area

POJ 1654 Area (多边形面积 鞋带定理) Area 题意 从原点(0, 0)开始,向 8 个方向画线段,线段的起终点均为整点,问围成的多边形面积。 思路 任意一个多边形的面积等于按顺序求相邻两个点与原点组成的向量的叉积之和(这个也可以通过顺时针定积分求得)。 代码 #include<iostream> #include<algorithm> #include<cstdio> #include<cstdlib> #define ll long long #define fi first #define 阅读详情

原题链接:http://poj.org/problem?id=1654
博主的中文题面:
https://www.luogu.org/problemnew/show/T23040  

Area

Description

You are going to compute the area of a special kind of polygon. One vertex of the polygon is the origin of the orthogonal coordinate system. From this vertex, you may go step by step to the following vertexes of the polygon until back to the initial vertex. For each step you may go North, West, South or East with step length of 1 unit, or go Northwest, Northeast, Southwest or Southeast with step length of square root of 2.

For example, this is a legal polygon to be computed and its area is 2.5:

Input

The first line of input is an integer t (1 <= t <= 20), the number of the test polygons. Each of the following lines contains a string composed of digits 1-9 describing how the polygon is formed by walking from the origin. Here 8, 2, 6 and 4 represent North, South, East and West, while 9, 7, 3 and 1 denote Northeast, Northwest, Southeast and Southwest respectively. Number 5 only appears at the end of the sequence indicating the stop of walking. You may assume that the input polygon is valid which means that the endpoint is always the start point and the sides of the polygon are not cross to each other.Each line may contain up to 1000000 digits.

Output

For each polygon, print its area on a single line.

Sample Input

4
5
825
6725
6244865

Sample Output

0
0
0.5
2

题解

求多边形面积的入门水题,只需要每次计算相邻两点向x轴做垂线所形成的梯形面积(两点与原点连接形成的三角形也可以),由于计算出的面积自带正负,所以累加起来刚好是要求解的多边形面积。

细节

大家可能注意到,当x轴穿过多边形时,上面的结论是错误的,所以我们需要手动将x轴向下平移,这样是不影响结果的。

代码
#include<cstdio>
#include<cstring>
#include<cmath>
#define db double
using namespace std;
struct pt{long long x,y;};
const int M=1e6+5;
const int mod=1e4;
char step[M];
pt p1,p2;
long long area()
{
    if(p1.x==p2.x) return 0;
    return 1ll*(p1.y+p2.y+2*mod)*(p1.x-p2.x)/2;
}
void change(int x)
{
    switch(x)
    {
        case 1:{p2.x-=10;p2.y-=10;break;}
        case 2:{p2.y-=10;break;}
        case 3:{p2.x+=10;p2.y-=10;break;}
        case 4:{p2.x-=10;break;}
        case 6:{p2.x+=10;break;}
        case 7:{p2.x-=10;p2.y+=10;break;}
        case 8:{p2.y+=10;break;}
        case 9:{p2.x+=10;p2.y+=10;break;}
    }
}
void ac()
{
    long long ans=0;
    char p;
    scanf("%s",step);
    int len=strlen(step);
    p1.x=0;p1.y=0;
    p2.x=0;p2.y=0;
    for(int i=0;i<len;++i)
    {
        change(step[i]-'0');
        ans+=area();
        p1=p2;
    }
    ans=ans>0?ans:-ans;
    if(ans%100)printf("%lld.5\n",ans/100);
    else printf("%lld\n",ans/100);
}
int main()
{
    int T;
    scanf("%d",&T);
    for(int i=1;i<=T;++i)
    {
        ac();
    }
    return 0;
}
海康H304NAS 刷机飞牛 本文旨在分享如何将闲置的海康威视H304 NAS刷入飞牛NAS系统,并利用iStoreOS作为安装媒介。之前因为使用极空间NAS,这台H304闲置已久。最近尝试了飞牛NAS,在虚拟机上安装后挂载极空间的电影资源,体验不错,于是决定重新折腾这台H304。我个人喜欢尝试新系统,之前经常更新H304的固件,但设备总在使用一两年后出现故障,需要联系技术清理日志才能恢复。最后一次设备“变砖”后,连技术人员也联系不上了,自己尝试修复未果,设备就此闲置两三年。 阅读详情

相关推荐

CAD二次开发(C#版):从零搭建开发环境与核心DLL引用指南

本文详细介绍了使用C#进行CAD二次开发的环境搭建与核心DLL引用指南,涵盖Visual Studio配置、AutoCAD插件项目创建、DLL引用技巧及调试方法。通过实战示例和常见问题排查,帮助开发者快速掌握CAD二次开发的核心技术,提升开发效率。

weixin_28837817的博客 728

其他计算几何

POJ1654【基础】 题目大意: 本质上是给出三角形求其垂心(证明比较容易这里略去)。 输入: 第一行有一个整数n,表示有n组测试数据。 每一组测试数据有三行,每一行有两个空格分隔的小数,表示一个三角形顶点的x y坐标。 输出: 每一组测试数据输出一行,包含两个空格分隔的四位小数,表示垂心的x y坐标。 ...

qq_2992427261 238

基于 Go 的微信滑块验证码自动化:协议还原与图像算法深度解析

本文从协议层、算法层和工程优化三个维度,系统拆解了基于Go的微信滑块验证码自动化方案。在协议层,通过手写protobuf编码器和RSA加密复现了微信UUID生成机制;在算法层,采用图像匹配技术实现滑块缺口定位;在工程层面,构建了包含HTTP状态机和随机化设备指纹的完整验证流程。文章重点阐述了技术实现的形式化建模、算法选择依据和复杂度分析,为工程师和算法研究者提供了可验证的技术方案。核心代码结构包括UUID生成、滑块状态机和图像匹配算法等模块,通过分层设计实现了高效可靠的验证码自动化破解。

weixin_65409651的博客 1293

poj1654 - Area

想看更多的解题报告: http://blog.youkuaiyun.com/wangjian8006/article/details/7870410                                      转载请注明出处:http://blog.youkuaiyun.com/wangjian8006 题目大意:一个坐标系,从原点开始走,然后1-4分别代表,向右下走,向右走,向右上走,向下走,5代表

贰圣 2323

别再只会regress了!用Stata的csdid命令搞定多期DID的完整实操指南

本文详细介绍了如何在Stata中使用csdid命令进行多期DID分析,解决传统DID方法在交错处理场景下的局限性。通过完整的实操指南,包括环境搭建、核心语法、结果解读和高阶应用,帮助研究者更准确地评估政策效果,适用于计量经济学和实证研究领域。

weixin_30236595的博客 582

SAP AI Core 高阶能力实战参考

文章摘要:本文探讨了在企业SAP架构中整合GenAI技术的工程化实践,重点分析了SAP AI Core的高阶能力应用。作者指出,企业级AI应用需解决多轮对话管理、Git同步工作流、提示词治理等核心问题,而非简单接入大模型API。技术方案展示了如何通过SAP AI Core的orchestration service管理对话历史,利用GitOps实现AI资产版本控制,并强调prompt template在审计合规中的治理价值。全文以SAP技术栈(ABAP/RAP/Fiori)为背景,阐释了AI能力与企业核心系

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 103

poj1654 Area 计算几何

链接:http://poj.org/problem?id=1654 Description You are going to compute the area of a special kind of polygon. One vertex of the polygon is the origin of the orthogonal coordinate system. From th

一七得七 357

HotSpot G1 GC 的分区记账、SATB 并发标记与停顿目标调优解析

线上GC毛刺该调停顿目标、加大新生代还是换收集器?本文从HotSpot G1的设计出发,梳理分区与巨型对象、卡表与记忆集、写屏障与细化线程、停顿预测、SATB并发标记、自适应IHOP、混合回收规则及Full GC兜底,并注明JDK8至JDK27的版本差异。文中在JDK8与JDK17上实测:停顿目标从200ms降到20ms,伊甸区缩小四成、P99下降但仍超目标;巨型对象会反复触发又撤销并发标记;JDK17并行Full GC平均停顿约为JDK8的三成。最后给出日志解读、参数清单、调优流程与选型。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 170万+

POJ 1654 Area (有向面积求多边形面积)

#include #include #include #include using namespace std; struct Point { double x,y; Point(){} Point(double _x,double _y) { x = _x;y = _y; } //向量 Point operator

u013112097的专栏 640

4、基于STM32 NUCLEO - F030R8开发板的嵌入式编程入门

本文详细介绍了如何在STM32 NUCLEO-F030R8开发板上实现LED闪烁功能,作为嵌入式编程的入门实践。内容涵盖开发板组成、跳线设置、项目创建、代码编写与解析、编译运行步骤,以及常见问题解决方法和拓展应用。通过本文学,习者可以掌握嵌入式开发的基本流程,并为后续深入学习打下基础。

m9n0o的博客 83

硬件工程师笔记——三极管Multisim电路仿真实验汇总

NPN型三极管:由N型半导体、P型半导体和N型半导体组成,即NPN结构。 PNP型三极管:由P型半导体、N型半导体和P型半导体组成,即PNP结构。 三极管的工作原理基于电流的控制和放大,其核心是基区对电流的控制作用。 将三极管等效为两个串联的二极管进行等效分析

XU157303764的博客 2635

POJ1654(多边形面积)

题目:Area 题意: 在一个网格中,你当前在起始点,然后给你一些数字,每个数字表示你网当前位置的8个方向走一步.然后你到了下一个网格点了,就这样让你走出一个多边形,要你输出该多边形的面积. 题目保证最后一步是回到原点,且保证能形成多边形. 图示: 分析: 求的是多边形的面积,我们有求多边形面积的三角形法。首先我们将所有的点都找到,然后代入去计算就可以了。特点是这个面积要么是个整...

qq_40905284的博客 257

CPU 访问外设的两种核心机制:MMIO(Memory-Mapped I/O) 和 DMA(Direct Memory Access)

BAR和DMA是计算机系统中两种关键的数据传输机制:BAR(基址寄存器)用于CPU与设备间的控制通信,映射设备寄存器便于配置操作;而DMA(直接内存访问)允许设备直接读写系统内存,无需CPU参与大量数据传输。典型场景如NVMe SSD读取数据时,CPU通过BAR下发指令,设备通过DMA高效传输数据到主机内存,最后中断通知CPU。虽然BAR能映射大内存空间,但仍无法替代DMA的高效数据传输功能,两者各司其职——BAR负责控制,DMA专注数据传输,共同实现高性能的硬件交互。

MHD0815的博客 237

POJ 1654 Area

POJ 1654 Area Description You are going to compute the area of a special kind of polygon. One vertex of the polygon is the origin of the orthogonal coordinate system. From this vertex, you may go step...

旺崽的博客 2966

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

POJ1654 Area【多边形的面积】

POJ1654Area http://poj.org/problem?id=1654 题意 在一个网格中,你当前在起始点,然后给你一些数字,每个数字表示你往当前位置的8个方向走一个单位或根号2个单位(斜线...

逐梦者 387

IEM模型,地表粗糙度模拟

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

poj 1654Area

链接1:http://openoj.awaysoft.com:8080/judge/contest/view.action?cid=269#problem/A  链接二:http://poj.org/problem?id=1654  A - Area Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d &

JHC23的专栏 590

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

POJ1654-Area

Area Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 14666   Accepted: 4124 Description You are going to compute the area of a special kind of polygon. One ver

ecjtu_acm_菜鸟—鱼尾尾 812

POJ1654 Area【水题】

Area Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 23051 Accepted: 6208 Description You are going to compute the area of a special kind of polygon. One vertex of the polygon is the orig...

海岛Blog 441

【POJ 1654】 【叉积】Area

【POJ 1654】 【叉积】Area 题目 poj 1654 解题思路 先处理出所有点 每一个多边形都可以被分割成很多个三角形 所以选定一个点,用叉积求出面积再除2的绝对值即为答案(叉积求的是平行四边形面积所以要除2) P.S 面积除2可能出现小数,但叉积必须要用long long不然会爆,所以特殊处理 代码 #include<iostream> #include<cstdio> #include<cmath> using namespace std; str

Y的博客 159

【POJ1654】Area【叉积】

这道题本身出了n多个BUG,改到疯掉。。。

stoorz 235

Area POJ - 1654

Area POJ - 1654 题意:就是让你求多边形面积 思路:利用多边形面积公式即可,输出格式第一次见。。。wa了好几发。。 1 // 2 // Created by HJYL on 2020/2/3. 3 // 4 #include<iostream> 5 #include<cstring> 6 #include<cstdio> 7 ...

_Vampire的博客 49

POJ 1654 Area(多边形面积)

POJ 1654 Area(多边形面积) http://poj.org/problem?id=1654 题意:        在一个网格中,你当前在起始点,然后给你一些数字,每个数字表示你网当前位置的8个方向走一步.然后你到了下一个网格点了,就这样让你走出一个多边形,要你输出该多边形的面积. 题目保证最后一步是回到原点,且保证能形成多边形. 分析:        82 6 4 : 上,

code 1067
上一篇: POJ1039 Pipe
下一篇: 计算几何刷题之路
ShadyPi
博客等级 码龄9年 1万+粉丝 637原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ShadyPi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值