【题目】http://codeforces.com/contest/1017/problem/C
【题意】1-n中的数怎样的排列能使得最长上升子序列元素个数+最长下降子序列元素个数最小
【思路】一开始以为是将后面一半挪到前面,这样答案是n/2+2...
fengju说要按根号n分,8 9 10 5 6 7 2 3 4 1,答案是2*根号n...
【代码】
#include<bits/stdc++.h>
//#define fuck(x) printf("[%s]:%d\n",#x,x)
using namespace std;
typedef long long ll;
int main()
{
int n;
cin>>n;
int t=sqrt(n);
int nn=n;
while(nn>=1)
{
for(int i=nn-t+1; i<=nn; i++)
{
if(i<=0)continue;
printf("%d ",i);
}
nn-=t;
}
}