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\n",(2*m*m)*n*n-(2*m*m-1)*n+1);
} 

    return 0;
}
时间: 2024-10-07 16:44:23

TOJ 4689: Sawtooth的相关文章

直线、圆、其他图形可以将一个无限大的平面分成的块数

3Blue1Brown有个视频,就是在一个马克杯上画三个不同的房子,还有三哥不同的设施(供气.供电和供水),每一个房子都要连接三个设施 一共要画九条线,任意两条线不能相交  [官方双语]众多科普YouTuber深陷图论谜题,谜底竟然... 这个问题是不可解的,很多大神也画不出来,因为Euler公式23333(欧拉简直太神了) Euler公式是说,在一个由若干顶点和它们之间的一些不相交的边所组成的图中,等式V+F=E+2总成立 其中V表示顶点个数,E表示总的边数,F表示这个图分割出来的区域个数(包

TOJ 2850 Corn Fields 状压dp

Source: http://acm.tju.edu.cn/toj/showp.php?pid=2850 题意:n*m的土地上种东西,每个位置分为可以种和不能,种的方案要求不能相邻地种,问合法方案数.(写得有点乱) 分析:做过炮兵阵地,这题就是秒杀了. 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 6 const int mo = 1000000

TOJ 2294 POJ 3286 How many 0&#39;s? 数位dp

http://acm.tju.edu.cn/toj/showp2294.html http://poj.org/problem?id=3284 题外话:集训结束,回学校了.在宿舍看了这题,没什么好想法,去洗澡了.转了两个澡堂都特么没开..倒是在路上把这题想了.用回自己的电脑,不得不说苹果的字体渲染,真心高一个等级. 题意:给定两个数a和b,从a写到b,问一共写了多少个0. 分析:当然先转化为求0..a写多少个0.网上有更简单的做法,就是枚举每位作为0,则如果这一位本来是0,左边取1..a-1(不

TOJ 4105 Lines Counting(离线树状数组)

4105.   Lines Counting Time Limit: 2.0 Seconds   Memory Limit: 150000K Total Runs: 152   Accepted Runs: 47 On the number axis, there are N lines. The two endpoints L and R of each line are integer. Give you M queries, each query contains two interval

TOJ刷题记录(2/50)

P1172:二分,最大化最小值 1 #include <algorithm> 2 #include <bitset> 3 #include <cctype> 4 #include <complex> 5 #include <cstdio> 6 #include <cstring> 7 #include <iostream> 8 #include <map> 9 #include <queue> 10

TOJ 1139.Compromise

2015-06-03 问题简述: 大概就是输入两段文本(用小写英文字母表示),分别用#表示一段话的结束输入,输出这两个文本的最长公共子序列. 简单的LCS问题,但是输入的是一段话了,而且公共部分比较是字符串的比较. 原题链接:http://acm.tju.edu.cn/toj/showp.php?pid=1139 解题思路: 简单的最长公共子序列问题,只不过过程中比较的是两个字符串,故使用二维字符数组保存输入文本. 输入 x[1...m][], y[1...n][] ,c[i,j]代表两个文本的

hdu----(5047)Sawtooth(大数相乘+数学推导)

Sawtooth Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 422    Accepted Submission(s): 134 Problem Description Think about a plane: ● One straight line can divide a plane into two regions. ● Tw

toj 4074 CF 319C 斜率优化dp

Source: http://acm.tju.edu.cn/toj/showp4074.html http://codeforces.com/problemset/problem/319/C 题意: 有n棵树(n < 10^5),每棵高度为a[i],还有个属性b[i].现在我们有个锯子来砍树,每用一次就需要维修,维修的费用是b[i],i = max(已经砍完的树的id),如果没有砍完的树,则不能维修.保证a[i]严格递增,b[i]严格递减,且a[1] = 1, b[n] = 0.求砍完所有树的最

ZOJ 3814 Sawtooth Puzzle(牡丹江网络赛F题)

ZOJ 3814 Sawtooth Puzzle 题目链接 记录状态广搜,把9个拼图都压缩成一个状态,然后去搜索,就是模拟的过程比较麻烦 代码: #include <cstdio> #include <cstring> #include <queue> #include <algorithm> #include <set> using namespace std; typedef unsigned long long ll; int t; int