P6269 【[SHOI2002]空中都市】
这道题自己要多手模一下,我这里画图理解
那么对于\(n=5\)的情况,\(ans=6\)
一个例子不够明显,再来一个
那么对于\(n=6\)的情况,\(ans=9\)
不难发现这就是一个等差数列,公差为\(2\),末项为\(n-1\),可以用样例二验证一下
那么这道题就可以\(O(1)\)了,但是本蒟蒻不会等差数列求和公式,所以大概是\(O(n/2)\)(口胡的时间复杂度)
#include<bits/stdc++.h>
using namespace std;
int n;
int main(){
scanf("%d",&n);
int ans=0;
for(register int i=n-1;i>=0;i-=2){
ans+=i;
}
cout<<ans;
return 0;
}