热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

POJ1265:皮克定理的应用与解析

题意:求多边形内部整点的个数、边上整点数、多边形的面积(点数指正点数)题解:[Pick定理]设以整数点为顶点的多边形的面积为

题意:

求多边形内部整点的个数、边上整点数、多边形的面积(点数指正点数)

 

题解:

[Pick定理] 设以整数点为顶点的多边形的面积为S, 多边形内部的整数点数为N, 多边形边界上的整数点数为L, 则 N + L/2 - 1 = S

 

 

View Code

1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7
8 #define N 222
9
10 using namespace std;
11 //[Pick定理] 设以整数点为顶点的多边形的面积为S, 多边形内部的整数点数为N, 多边形边界上的整数点数为L, 则 N + L/2 - 1 = S
12 struct PO
13 {
14 int x,y;
15 }p[N];
16
17 int n,gs;
18
19 inline void read()
20 {
21 scanf("%d",&n);
22 for(int i&#61;1,a&#61;0,b&#61;0,c,d;i<&#61;n;i&#43;&#43;)
23 {
24 scanf("%d%d",&c,&d);
25 a&#43;&#61;c; b&#43;&#61;d;
26 p[i].x&#61;a; p[i].y&#61;b;
27 }
28 }
29
30 inline int cross(PO &a,PO &b,PO &c)
31 {
32 return (b.x-a.x)*(c.y-a.y)-(c.x-a.x)*(b.y-a.y);
33 }
34
35 inline int gcd(int a,int b)
36 {
37 int ys;
38 while(b)
39 {
40 ys&#61;a%b;
41 a&#61;b; b&#61;ys;
42 }
43 return a;
44 }
45
46 inline int getnum(PO &a,PO &b)
47 {
48 int x&#61;abs(a.x-b.x),y&#61;abs(a.y-b.y);
49 return gcd(x,y)-1;
50 }
51
52 inline int getarea()
53 {
54 int ans&#61;0;
55 for(int i&#61;1;i<&#61;n;i&#43;&#43;) ans&#43;&#61;cross(p[0],p[i],p[i&#43;1]);
56 return ans;
57 }
58
59 inline void go()
60 {
61 p[n&#43;1]&#61;p[1];
62 int edgenum&#61;n;
63 for(int i&#61;1;i<&#61;n;i&#43;&#43;) edgenum&#43;&#61;getnum(p[i],p[i&#43;1]);
64 int area&#61;abs(getarea());
65 int innum&#61;(area-edgenum)/2&#43;1;
66 printf("Scenario #%d:\n",&#43;&#43;gs);
67 printf("%d %d %.1lf\n\n",innum,edgenum,area*0.5);
68 }
69
70 int main()
71 {
72 int cas; scanf("%d",&cas);
73 while(cas--) read(),go();
74 return 0;
75 }

 

 

转:https://www.cnblogs.com/proverbs/archive/2013/02/24/2924585.html



推荐阅读
  • 本文探讨了如何在Classic ASP中实现与PHP的hash_hmac('SHA256', $message, pack('H*', $secret))函数等效的哈希生成方法。通过分析不同实现方式及其产生的差异,提供了一种使用Microsoft .NET Framework的解决方案。 ... [详细]
  • 深入解析ESFramework中的AgileTcp组件
    本文详细介绍了ESFramework框架中AgileTcp组件的设计与实现。AgileTcp是ESFramework提供的ITcp接口的高效实现,旨在优化TCP通信的性能和结构清晰度。 ... [详细]
  • Linux环境下C语言实现定时向文件写入当前时间
    本文介绍如何在Linux系统中使用C语言编程,实现在每秒钟向指定文件中写入当前时间戳。通过此示例,读者可以了解基本的文件操作、时间处理以及循环控制。 ... [详细]
  • 深入解析SpringMVC核心组件:DispatcherServlet的工作原理
    本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ... [详细]
  • CSS高级技巧:动态高亮当前页面导航
    本文介绍了如何使用CSS实现网站导航栏中当前页面的高亮显示,提升用户体验。通过为每个页面的body元素添加特定ID,并结合导航项的类名,可以轻松实现这一功能。 ... [详细]
  • 在尝试使用C# Windows Forms客户端通过SignalR连接到ASP.NET服务器时,遇到了内部服务器错误(500)。本文将详细探讨问题的原因及解决方案。 ... [详细]
  • yikesnews第11期:微软Office两个0day和一个提权0day
    点击阅读原文可点击链接根据法国大选被黑客干扰,发送了带漏洞的文档Trumps_Attack_on_Syria_English.docx而此漏洞与ESET&FireEy ... [详细]
  • 优化SQL Server批量数据插入存储过程的实现
    本文介绍了一种改进的SQL Server存储过程,用于生成批量插入语句。该方法不仅提高了性能,还支持单行和多行模式,适用于SQL Server 2005及以上版本。 ... [详细]
  • 本题要求在一组数中反复取出两个数相加,并将结果放回数组中,最终求出最小的总加法代价。这是一个经典的哈夫曼编码问题,利用贪心算法可以有效地解决。 ... [详细]
  • 本文探讨了如何利用HTML5和JavaScript在浏览器中进行本地文件的读取和写入操作,并介绍了获取本地文件路径的方法。HTML5提供了一系列API,使得这些操作变得更加简便和安全。 ... [详细]
  • 本文详细介绍了如何使用 HTML 和 CSS 对文件上传按钮进行样式美化,使用户界面更加友好和美观。 ... [详细]
  • 本文详细介绍了Java中实现异步调用的多种方式,包括线程创建、Future接口、CompletableFuture类以及Spring框架的@Async注解。通过代码示例和深入解析,帮助读者理解并掌握这些技术。 ... [详细]
  • 由中科院自动化所、中科院大学及南昌大学联合研究提出了一种新颖的双路径生成对抗网络(TP-GAN),该技术能通过单一侧面照片生成逼真的正面人脸图像,显著提升了不同姿态下的人脸识别效果。 ... [详细]
  • CentOS 6.8 上安装 Oracle 10.2.0.1 的常见问题及解决方案
    本文记录了在 CentOS 6.8 系统上安装 Oracle 10.2.0.1 数据库时遇到的问题及解决方法,包括依赖库缺失、操作系统版本不兼容、用户权限不足等问题。 ... [详细]
  • 搭建Jenkins、Ant与TestNG集成环境
    本文详细介绍了如何在Ubuntu 16.04系统上配置Jenkins、Ant和TestNG的集成开发环境,涵盖从安装到配置的具体步骤,并提供了创建Windows Slave节点及项目构建的指南。 ... [详细]
author-avatar
手机用户2502939987
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有