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;
}
posted @ 2020-08-27 21:48  Poetic_Rain  阅读(80)  评论(0编辑  收藏  举报