此题题意非常简单,就是画一个有个结点的图,使得图中不存在一个含有三个点的子图,问最多可以有多少条边。
很显然,当时答案肯定是,因为当时不管怎么架桥都必须要拆一座。
那?之后呢?
我们可以很容易地发现,对于每一个,连的边数一定是的边数,即
对于每一个
为什么呢?
很简单,因为假设我们多连一条边,那么一定会有一条冗余的一条边。我们可以假设个点组成的组成的那个图,那么会有一个孤点,我们可以将这个点连若干条边,可以顺次连,当我们连到时就会组成三角形 ,这个很简单,泥萌应该都知道吧。
之后,就是代码啦:
#include <bits/stdc++.h> using namespace std; int main() { int n; cin>>n; int f[10005]; f[0]=0;//初始一下 for(int i=1;i<=n;i++) f[i]=f[i-1]+(i/2);//套上面的公式,相当于一个小递推 cout<<f[n];//输出第N个 return 0; }
于是你就了一道远古时代的被恶评的省选题