A- FZU - 2205

题目链接
题意很简单,
一个国家有 N 个城市,国王不希望国家中存在三个城市之间能够互相直接到达,但道路要求尽可能的多,道路是双向边,且无重边无自环。

国王希望你最好能解决这个问题。求最多存在多少条道路

一开始看题目觉得是个公式题,然后大概的猜了一个,2 4 7 … 然后,没对。
然后,暂时放下思考。去做了其它题目。

解题思路:
根据题意,显然我们不能让三个连在一起,那么可以将城市分成二分图形式;
比如
城市个数 道路
2
A B 1  A与B连 就一条
3
A B 2  A C分别和B连就两条
C
5 
A B    左边A C E与右边 B连共三条 D同理也是三条 
C D  6
E      
所以就是
2 1
3 2
4 4
5 6
可以推出规律为(n/2)*(n-n/2);
或者你可以这样推:
左边和右边 如果是偶数,直接n/2相乘.
如果是奇数,那么左边是n/2右边就是剩下的乘与n/2 剩下的就是n-(n/2);

#include<iostream>
#define pi acos(-1.0)
#define MaxN 0x3f3f3f3f
#define MinN 0xc0c0c0c0
using namespace std;
typedef unsigned long long ull;
typedef long long ll;
const int N=1e3+10;
const int M=1e9;
int t,n;
int main()
{
   
    cin>>t;
    while(t--)
    {
   
        cin>>n;
        cout<<(n/2)*(n-n/2)<<endl;
    }
    return 0;
}
全部评论

相关推荐

斑驳不同:还为啥暴躁 假的不骂你骂谁啊
点赞 评论 收藏
分享
M_bao:换个排版吧哥们,看着费劲
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务