zoukankan      html  css  js  c++  java
  • TOJ 4689: Sawtooth

    4689: Sawtooth 

    Time Limit(Common/Java):1000MS/3000MS     Memory Limit:65536KByte
    Total Submit: 26            Accepted:8

    Description

     

    给予一条直线,最多可以将一个无限大平面分为两块,而两条直线,最多可以将平面分为4块。嘛,稍稍提升些难度,若给予n个拥有m个锯齿的图形,最多能将平面分为几个区域呢?

    Input

     

    多组测试数组。每组测试数据含有两个数m、n(1<=m<=10000,2<=n<=10000),分别代表锯齿个数和图形的个数。

    Output

     

    每组输出仅含一行一个数,代表最多能将平面分割的个数。

    Sample Input

     

    2 1
    2 2

    Sample Output

    2
    19

    Hint

    如图为1个拥有2个锯齿的图形,则在例中2个拥有2个锯齿的图形最多可以将平面分割为如下19块。

    (注意锯齿状的图形外侧两边为射线,即无限长,其余边均为有限长)

    作为一个喜(tao)欢(yan)几何的人,我很难想象自己怎么把这道题做出来了,我就是感觉挺有意思的,就如饥似渴地想找他的通项公式,HDOJ有一道类似的HDU - 5047,但是没我们这个需要处理的内容多,那个是个固定两个锯齿的。今天看到具体数学,无聊在翻,发现第一章就出现

    答案类似物,我特么好像不用那么死命得推?其实本来我的想法也是直线相交-损失的空间,然后再根据n个锯齿来调整内容反正锯齿对应的数量级是2n^2的,直线是n^2/2(即n*(n-1)/2)发下标记下,给后人留个思考方式。推通项公式真的也没有想象的那么难,三项就差不多了,毕竟你知道第一项的数量级

    #include <stdio.h>
    int main()
    {__int64 m,n;
    while(~scanf("%I64d%I64d",&m,&n)){
        printf("%I64d
    ",(2*m*m)*n*n-(2*m*m-1)*n+1);
    } 
        
        return 0;
    }
  • 相关阅读:
    Skimage=scikit-image SciKit 包的模块(转载)
    python day12
    python day11
    python day10
    python day9
    python day8
    python day7
    python day6
    python 第五天
    python 第四天
  • 原文地址:https://www.cnblogs.com/BobHuang/p/6843394.html
Copyright © 2011-2022 走看看