hdu 2050 折線分割平面
折線分割平面
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 20315 Accepted Submission(s): 13928
Problem Description 我們看到過很多直線分割平面的題目,今天的這個題目稍微有些變化,我們要求的是n條折線分割平面的最大數目。比如,一條折線可以將平面分成兩部分,兩條折線最多可以將平面分成7部分,具體如下所示。
Input 輸入資料的第一行是一個整數C,表示測試例項的個數,然後是C 行資料,每行包含一個整數n(0<n<=10000),表示折線的數量。
Output 對於每個測試例項,請輸出平面的最大分割數,每個例項的輸出佔一行。
Sample Input 2 1 2
Sample Output 2 7
Source
對於遞推問題 ,無非就是一個找規律,遞推遞推,顧名思義就是從前往後一次的推導。因此,遞推問題,
本題的解答以上兩種方法都是可以解答出來的。
下面我們就來推導一下的他們的解題公式(先附上兩條折線和三條折線的畫法)
兩條折線的畫法(有多種畫法,這裡就畫兩種畫法(最為對比推理),要求最多故需要的是圖二的畫法,也是原題給出的圖)
以下是三條折線的畫法(當然三條折線的畫法有很多,這裡就只給大家畫出來正確的一種)
這裡我給大家推導以下遞推公式的推導步驟:
上面看到了兩條折線 和三條折線的畫法,我們先來考慮以下兩條折線的畫法,同樣是兩條折線為什麼圖二的就比圖一的要多呢,我們這裡仔細的分析以下兩個圖的不同,經過觀察,不難發現,圖二的交點比圖一的交點多了兩個,那是不是這個原因呢?回答是當然!那麼問題又來了 交點的數目與分割的數量的增加有關係麼?回答仍然是當然!那麼交點數目與分割的數量到底有什麼關係呢?我們再來看看圖。
經過觀察,你可以發現,如果在相鄰的兩個線段(或者射線)上任選取兩個點,將這兩點連線,那麼原來的一個區域就會多被分割出來一個。所以每次所有的交點的之間的區域的數量的增加量就為(交點的數量 - 1)
所以就有f(n) = f(n-1) + 4 * (n-1) - 1 + 2;
化簡的 f(n) = (n-1) + 4 * n - 3;
附上原始碼:
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
long long s[10050] = {1,2,7};
for(int i = 3;i < 10001;i++)
{
s[i] = s[i-1] + 4 * i - 3;
}
int n;
cin >> n;
while(n--)
{
int a;
cin >> a;
cout << s[a] << endl;
}
return 0;
}
另外還有一種就是求其通項公式:
根據直線分平面可知,由交點決定了射線和線段的條數,進而決定了新增的區域數。當n-1條折線時,區域數為f(n-1)。為了使增加的區域最多,則折線的兩邊的線段要和n-1條折線的邊,即2*(n-1)條線段相交。那麼新增的線段數為4*(n-1),射線數為2。但要注意的是,折線本身相鄰的兩線段只能增加一個區域。
故:f(n)=f(n-1)+4(n-1)+2-1
=f(n-1)+4(n-1)+1
=f(n-2)+4(n-2)+4(n-1)+2
……
=f(1)+4+4*2+……+4(n-1)+(n-1)
=2n^2-n+1
通項公式為:2 * n^2 - n + 1
附上原始碼:
#include <iostream>
using namespace std;
int main()
{
int n, m;
cin >>n;
while(n--)
{
cin >>m;
cout <<2*m*m - m + 1 <<endl;
}
return 0;
}
相關推薦
hdu 2050 折線分割平面 遞推
ora sin 直線 ble cin problem names HR hdu 2050 題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=2050 遞推求解 參考大佬博客:https://blog.csdn.net/hpulw
hdu 2050.折線分割平面
class n-2 hdu 2050 n) while scan problem n-1 pac http://acm.hdu.edu.cn/showproblem.php?pid=2050 思路:直線分割平面的特殊情況 第n個折線第時候: 折線的第一個射線與原有
HDU - 2050 - 折線分割平面(數學 + dp)
hdu 題意 sca 代碼 我們 href 分割 今天 names 題意: 我們看到過很多直線分割平面的題目,今天的這個題目稍微有些變化,我們要求的是n條折線分割平面的最大數目。比如,一條折線可以將平面分成兩部分,兩條折線最多可以將平面分成7部分 思路: 記住結論。。。 平
[遞推簡單dp]-hdu 2050 折線分割平面
[遞推簡單dp]-hdu 2050 折線分割平面 標籤: ACM 題意: 我們看到過很多直線分割平面的題目,今天的這個題目稍微有些變化,我們要求的是n條折線分割平面的最大數目。比如,一條折線可以將平面分成兩部分,兩條折線最多可以將平面分成7部分,具體如下所示。
【遞推DP&技巧 hdu 2050 折線分割平面】
我們看到過很多直線分割平面的題目,今天的這個題目稍微有些變化,我們要求的是n條折線分割平面的最大數目。比如,一條折線可以將平面分成兩部分,兩條折線最多可以將平面分成7部分,具體如下所示。 Input 輸入資料的第一行是一個整數C,表示測試例項的個數,然後是C 行資料,每行包含一個整數n(0&
HDU-2050 折線分割平面
我們看到過很多直線分割平面的題目,今天的這個題目稍微有些變化,我們要求的是n條折線分割平面的最大數目。比如,一條折線可以將平面分成兩部分,兩條折線最多可以將平面分成7部分,具體如下所示。 Input 輸入資料的第一行是一個整數C,表示測試例項的個數,然後是C
HDU 2050 折線分割平面 題解
原題連結:http://acm.hdu.edu.cn/showproblem.php?pid=2050 由題意得: 1.題意很簡單,就是找規律 2畫圖得:f[1]=2; f[2]=7=f[1]+5=f[1]+2*3-1 f[
hdu 2050 折線分割平面
折線分割平面 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 20315 Accepted Submiss
[hdu-2050] 折線分割平面
折線分割平面 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 15796 Accepted Subm
hdu 2050 折線分割平面(解析,直線,平行線,折線,三角形)
折線: 折線數 所含直線數 最多交點數 平面數 1 2 0 2 2 4 4=2*2 f(1)+5=f(1)+(2*3-1) 3 6 8=4*2 f(2)+9=f(2)+(2*5-1) 4 8
HDU 2050 折線分割平面
(1) n條直線最多分平面問題 題目大致如:n條直線,最多可以把平面分為多少個區域。 析:可能你以前就見過這題目,這充其量是一道初中的思考題。但一個型別的題目還是從簡單的入手,才容易發現規律。當有n-1條直線時,平面最多被分成了f(n-1)個區域。則第n條直線要是切成的區域數最多,就
hdu 2050 折線分割平面 (遞推)
原題連結:http://acm.hdu.edu.cn/showproblem.php?pid=2050 任何三條直線不會相交於一點。 分析: 我們容易知道當n條直線分割平面的時候,遞推公式為 F(n
HDU:2050 折線分割平面(規律,數學,推導)
折線分割平面 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 25016 Accepted Submis
Hdoj 2050.折線分割平面 題解
amp space 很多 __int64 images 折線 namespace mode 產生 Problem Description 我們看到過很多直線分割平面的題目,今天的這個題目稍微有些變化,我們要求的是n條折線分割平面的最大數目。比如,一條折線可以將平面分成兩部分
2050 折線分割平面
我們看到過很多直線分割平面的題目,今天的這個題目稍微有些變化,我們要求的是n條折線分割平面的最大數目。比如,一條折線可以將平面分成兩部分,兩條折線最多可以將平面分成7部分,具體如下所示
HDU 2050(折線分割平面)
des print 分享 several def while 要求 earch sele 傳送門: http://acm.hdu.edu.cn/showproblem.php?pid=2050 折線分割平面 Time Limit: 2000/1000 MS (Java/Ot
折線分割平面 (HDU 2050) ——數學歸納
折線分割平面 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 1577
HDU 2050:折線分割平面
折線分割平面 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 36918 Accepted Submiss
折線分割平面 HDU
我們看到過很多直線分割平面的題目,今天的這個題目稍微有些變化,我們要求的是n條折線分割平面的最大數目。比如,一條折線可以將平面分成兩部分,兩條折線最多可以將平面分成7部分,具體如下所示。 Input 輸入資料的第一行是一個整數C,表示測試例項的個數,然後是C 行資
HDOJ 折線分割平面 2050
折線分割平面 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 18051 Accepted Submiss