• 【GDKOI2017】 两个胖子萌萌哒 小学奥数题


    题目大意:给你一个$n imes m$的网格,你要在这个网格上画三角形。

    三角形的顶点只能在网格的整点上,且至少有一条边平行于$x$或$y$轴,且三角形面积为整数。问你能画多少个不同的三角形。

    两个三角形被判定为不同,当且仅当两个三角形所包含的点集不相同。

    多组询问,$n,m≤10^9$。

    这题是裸的小学奥数题。。。。

    我们先不管那个面积限制,先来看下有多少个三角形满足前两个条件。

    我们令三角形的一边平行于$x$轴,我们考虑枚举底边,显然底边有$ dfrac {m(m+1)(n+1)} {2}$种不同的取法(不同的位置,长度)

    然后,我们枚举三角形的顶点,显然不能跟底边位于同一个$x$轴上,那么有$n(m+1)$种取法。

    平行与$y$轴的情况同理。

    但是这么算会将直角三角形的数量算重,我们考虑减去这些三角形

    我们考虑枚举三角形的直角顶点位置以及两边边长,这个相当于是在两条长度分别为$n$和$m$的线段上截取两段出来,方案数显然为$dfrac{m(m+1)n(n+1)}{4}$种。

    然后,考虑到枚举出的一组线段,共有$4$种构造的方法,故方案数要$ imes 4$。

    我们成功求出了三角形的数量。

    考虑这些三角形中不合法的数量,不合法的三角形,显然底边和高的长度均为奇数。

    我们考虑将网格格点进行黑白染色,记 $n1=lceil dfrac{n}{2} ceil $,$n2=lfloor dfrac{n}{2} floor $。$m1,m2$同理。

    那么显然,一个不合法的,且底边与$x$轴平行的三角形,底边两点的横坐标必然一个为奇,一个为偶数的,方案数为$n1 imes n2$。

    下面考虑枚举底边和顶点的纵坐标,显然底边和顶点所在的纵坐标必须一个为奇,一个为偶,方案数为$2m1 imes m2$,顶点横坐标显然有n中选法。

    故与$x$轴平行的不合法三角形总共有$2n1 imes n2 imes m1 imes m2 imes n$个。

    底边与$y$轴平行的三角形同理。

    考虑不合法的直角三角形,数量为$4n1 imes n2 imes m1 imes m2$。(枚举两条边边长,直角朝向)。

    然后就没有了 

     

  • 相关阅读:
    Java NIO中的缓冲区Buffer(二)创建/复制缓冲区
    Java NIO中的缓冲区Buffer(一)缓冲区基础
    Java中的反射
    Java SE 9(JDK9)环境安装及交互式编程环境Jshell使用示例
    Spring Data JPA例子[基于Spring Boot、Mysql]
    Spring Session
    Spring Data Redis示例
    Spring IO Platform简介及示例
    使用Spring Boot开发 “Hello World” Web应用
    2017/01/13,今天正好是开通博客园一周年,谈谈自己的一些想法
  • 原文地址:https://www.cnblogs.com/xiefengze1/p/9863610.html
Copyright © 2020-2023  润新知