您的位置:首页 > 其它

FZU-2205 据说题目很水(思维、完全二分图性质避免三元环)

2017-09-03 15:53 330 查看
题意:

给一个N,求构造一个N个点的无向图,保证没有任意三个点相互直接相连,使边数最多。

思路:

可以画几个点去找规律,n==2时ans=1,n==3时ans=2,n>3时,ans
= ans[n-1]+key,key是从第4个开始变化2,2,3,3,4,4,5,5...所以预处理一下,输出答案即可。

还可以利用二分图的性质,对于完全二分图任意加一条边都会导致出现三角形,所以我们使n个点尽量均分到二分图的A、B部,然后求完全二分图的边数[(n/2)*(n-n/2)]就是答案。

代码:

#include <bits/stdc++.h>
using namespace std;
int ans[1005];
void init()
{
ans[2] = 1, ans[3] = 2;
int key = 2, cnt = 2;
for(int i = 4; i <= 1000; ++i)
{
ans[i] = ans[i-1]+key, --cnt;
if(!cnt) cnt = 2, ++key;
}
}
int main()
{
int t, n, x;
cin >> t; init();
while(t--)
{
cin >> n;
cout << ans
<< endl;
}
return 0;
}
/************************************/
#include <bits/stdc++.h>
using namespace std;
int main()
{
int t, n;
cin >> t;
while(t--)
{
cin >> n;
cout << (n/2)*(n-n/2) << endl;
}
return 0;
}


继续加油~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: