这是一道洛谷里的题目
难度级别:普及/提高-
题目提供者:大神cyd
题目背景
NOIP2015初赛。CYD大神在他的母校跪掉了。初赛那天,他回到原来的教室参观了一下,发现那张遍布了N个洞的课桌还摆在那里——那是他初中时和XHY同学坐过的桌子。这时,CYD大神的心都碎了。
题目描述
CYD大神的心可以看做一个环,内外都顺时针均匀分布了N个一一正对应的点。当他看到第i个洞时,就会想起第Ai件往事,这会在CYD大神的心上外侧第i个点和内侧第Ai个点间留下一道伤痕(i<Ai时为顺时针,i>Ai时逆时针,i=Ai时正对应)。
CYD大神觉得,他的心一定不会再碎了,所以,他想让你帮他写一个程序,确定一个Ai的排列,使得他的心碎的块数最多。
输入格式
第一行,一个正整数N。
输出格式
仅一行,一个正整数表示CYD大神的心最多碎成多少块。
输入输出样例
输入 #1
2
输出 #1
3
输入 #2
3
输出 #2
5
输入 #3
4
输出 #3
9
说明/提示
对于40%数据,前i*10%,N<=i*5。
对于50%数据,N<=50。
对于70%数据,N<=233。
对于100%数据,N<=2333。
/*P.S.样例解释*/
样例1:1->2,2->1
样例2:1->2,2->3,3->1,注意:若1->3,2->2,3->1,则三线共点。
样例3:1->3,2->4,3->2,4->1
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
题解:
代码:
#include<iostream>
using namespace std;
int main()
{
int n,ans=0;
cin>>n;
for(int i=1;i<=n;i++)
{
if(i!=1&&i%2==1)
{
ans+=i-1;
}
else
{
ans+=i;
}
}
cout<<ans;
return 0;
}
通过照片: