據說題目很水 FZU - 2205 思路題

Sunday最近對圖論特別感興趣,什麼歐拉回路什麼哈密頓迴路,又是環又是樹。在看完一本書後,他對自己特別有信心,便找到大牛牛犇犇,希望他出一題來考考自己。

在遙遠的古代東方有N個城市,它們之間可以通過雙向的道路相連。任意兩個城市由不超過一條道路直接相連,而且沒有城市的道路連向自身。但是牛犇犇是個純情的小夥子,儘管他還沒有女朋友,但他還是很討厭第三者,以至於討厭三這個數字。所以他希望Sunday能夠構造一個N個城市的地圖,這個地圖中不能有任意三個城市能夠相互直接到達,而且地圖中的道路數目最多。

牛犇犇考慮到Sunday是個菜鳥,所以只讓他回答上述地圖含有的道路數目,而不需要輸出地圖是由哪些道路組成。(題外話:其實只是因爲special judge的評測程序比較麻煩而已)

Input

第一行一個整數T(1 <= T <= 100),表示測試數據的組數。

每組數據只包含一個N(1 <= N <= 1000),表示N個城市。

Output

每組數據輸出僅有一行,表示在符合題意下N個城市所能連接的最大道路數目。

Sample Input
2
3
4
Sample Output
2
4

題意:現在有n個點,這n個點之間可以連一些線,兩個點之間最多只能有一條線,現在連線要求是:任意選三個點,這三個點不能兩兩相連。1 連2,2連3,那麼1就不能連3了,  任意三個點都有這個限制,求這n個點最多能有多少個連線?

思路:要想不出現三個點的環,有一個要求,新出現的點 不能同時連接 已經連接的兩個點。及1連2,那麼新出現的3,就不能同時連接1和2;  這個思路主要是這一條,就能解決該題。

1  個點的時候 :1

2  個點的時候 :1,2       (1-2)//我用這個來表示連線關係

3  個點的時候 :1,2,3        (1-2) (2-3)

4  個點的時候 :1,2,3,4        (1-2) (2-3) (1-4)(3-4)  

5  個點的時候 :1,2,3,4,5        (1-2) (2-3) (1-4)(3-4) (2-5)(4-5)

6  個點的時候 :1,2,3,4,5,6        (1-2) (2-3) (1-4)(3-4) (2-5)(4-5) (1-6)(3-6)(5-6)

7  個點的時候 :1,2,3,4,5,6,7        (1-2) (2-3) (1-4)(3-4) (2-5)(4-5) (1-6)(3-6)(5-6) (2-7)(4-7)(6-7)

你會發現新出現的點n先跟 n-1連接,因爲相鄰的兩個點都已經連接了,所以每間隔一個就連接一個(這樣能保證最多的連線)

#include <iostream>
#include <stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;
int ans[1500];
int main()
{
    ans[0]=0;
    for(int i=1;i<=1000;i++)
        ans[i]=ans[i-1]+i/2;
    int t;
    scanf("%d",&t);
    while(t--)
    {
        int n;
        scanf("%d",&n);
        printf("%d\n",ans[n]);
    }
}



發佈了156 篇原創文章 · 獲贊 56 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章