zoukankan      html  css  js  c++  java
  • Luogu P2735 电网【真·计算几何/Pick定理】By cellur925

    题目传送门

    刷USACO偶然遇到的,可能是人生中第一道正儿八经的计算几何

    题目大意:在平面直角坐标系中给你一个以格点为顶点的三角形,求三角形中的整点个数。

    因为必修5和必修2的阴影很快就想到了数学中的线性规划,求出两条直线的方程,然后枚举所有整点看是否满足条件。结果莫名其妙的挂掉了,样例过不了。

    既然是计算几何萌新,那就看一看题解吧。

    正解是一个定理-Pick定理,内容如下

      “Pick定理是说,在一个平面直角坐标系内,如果一个多边形的顶点全都在格点上,那么这个图形的面积恰好就等于边界上经过的格点数的一半加上内部所含格点数再减一。”--Matrix67,侵删。

    于是我们就愉快地O(1)算出来了。

    Code

     1 #include<cmath>
     2 #include<cstdio>
     3 
     4 using namespace std;
     5 
     6 int n,m,p,b,S,ans;
     7 
     8 int gcd(int x,int y)
     9 {
    10     return y ? gcd(y , x%y) : x ;
    11 }
    12 
    13 int main()
    14 {
    15     scanf("%d%d%d",&n,&m,&p);
    16     b=gcd(n,m)+gcd(fabs(n-p),m)+p;
    17     S=(p*m)>>1;ans=S+1-(b>>1);
    18     printf("%d",ans);
    19     return 0;
    20 }
    View Code
  • 相关阅读:
    单例模式
    js事件
    oracle_to_excel
    jquery_2
    jquery_1
    4.linux 复制,删除,重命名
    一个tomcat下部署多个springboot项目
    3.centos7 安装oracle
    桥接模式
    组合模式
  • 原文地址:https://www.cnblogs.com/nopartyfoucaodong/p/9531098.html
Copyright © 2011-2022 走看看