zoukankan      html  css  js  c++  java
  • hdu1249 三角形分割平面---递推

    题目链接:

    http://acm.hdu.edu.cn/showproblem.php?pid=1249

    题目大意:

    用N个三角形最多可以把平面分成几个区域?

    思路:

    知道了直线和折线分割平面的情况这题就很简单了。我们知道,对于第i个三角形来说,其前面已经有了(i-1)个三角形==>有(3i-3)条边,对于第i个三角形,其每一条边最多能和之前的每个三角形的2条边有交点,即能和前面的(2i-2)条边各有一个交点,而这些交点会把第i个三角形的一条边分割成(2i-1)条线段,每一条线段会增加一个平面,这样3条边就增加了(2i-1)×3个平面,考虑到在三角形的三个顶点,在每一个顶点处相邻的两个线段并不会增加平面的数目,所以在三个顶点处的6个线段实质上只增加了3个平面,所以要减去这3个多算的平面数,这样,第i个三角形就会比i-1个三角形形成的平面数多出(2i-1)×3-3=6×(i-1)个了,即递推关系为:f(n)=f(n-1)+6×(i-1)。

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<set>
     6 #include<cmath>
     7 using namespace std;
     8 const int maxn = 1e4 + 10;
     9 typedef long long ll;
    10 ll T, n, m;
    11 ll a[maxn];
    12 int main()
    13 {
    14     cin >> T;
    15     a[1] = 2;
    16     for(int i = 2; i <= 10000; i++)a[i] = a[i - 1] + 6 * (i - 1);
    17     while(T--)
    18     {
    19         cin >> n;
    20         cout<<a[n]<<endl;
    21     }
    22     return 0;
    23 }
  • 相关阅读:
    Service Location Protocol SLP
    [http 1.1] M-POST
    安装 wbemcli
    [http 1.1] M-POST w3
    [CODEVS 1288]埃及分数
    [NOIp 2013]货车运输
    [测试题]gentree
    [USACO 07NOV]Cow Relays
    [USACO 13DEC]Vacation Planning(gold)
    [CODEVS 2495]水叮当的舞步
  • 原文地址:https://www.cnblogs.com/fzl194/p/8690672.html
Copyright © 2011-2022 走看看