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
  • 相关阅读:
    fopen和open的区别
    vc代码缩进
    防止u盘中autorun的一个小方法
    判断单链表是否有环
    四色原理
    Log4j的使用
    Ant学习笔记
    关于Oracle Exp00003问题的解决方法
    装机小记
    用iframe做编辑器
  • 原文地址:https://www.cnblogs.com/nopartyfoucaodong/p/9531098.html
Copyright © 2011-2022 走看看