TOJ 4689: Sawtooth
Posted BobHuang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TOJ 4689: Sawtooth相关的知识,希望对你有一定的参考价值。
4689: Sawtooth
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\n",(2*m*m)*n*n-(2*m*m-1)*n+1); } return 0; }
以上是关于TOJ 4689: Sawtooth的主要内容,如果未能解决你的问题,请参考以下文章
???HDU4689???Derangement??????????????????