HDU 4377 - Sub Sequence
来源:互联网 发布:易语言黑客源码 编辑:程序博客网 时间:2024/05/10 06:34
题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=4377
2012年多校 , 第8场, 1008 。
方法: 。。。。 我可以说找规律么。。。。
首先想到的是 12348765 这种排法,后来发现有点不对,找到了一个反例。。。
于是在一个小时之后,找到了正确排法: 4,3,2,1,8,7,6,5,12,11,10,9,16,15,14,13 。
就是说,先将最长下降自序列排好,并且分堆,如 4,3,2,1 是第一堆,8开头第二堆,12开头第三堆,16开头第四堆 。
然后再对下降子序列堆 排成 上升序列,如 4开头,8开头,12开头,16开头 。
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<queue>#include<map>#include<vector>using namespace std;const int inf = 0x7fffffff;const __int64 inf64 = (__int64)inf*inf;int main(){int t,i,j,nn,n,kk,k,f;scanf("%d",&t);while(t--){scanf("%d",&n);if(n==2){puts("1 2");continue;}nn=sqrt((double)(n-1))+1;k=(n-1)/nn;f=0;for(i=1;i<=n;i++){if(k+i>=nn) break;if(f) printf(" %d",i);else{printf("%d",i); f=1;}}if(i<=n){kk=(n-i+1)%nn;for(j=i+kk-1;j<=n;j+=nn){for(k=j;k>=i;k--){if(f) printf(" %d",k);else{printf("%d",k); f=1;}}i=j+1;}}puts("");}return 0;}
- HDU 4377 - Sub Sequence
- hdu 4377 Sub Sequence
- HDU 4377 Sub Sequence[串构造]
- Sub Sequence
- hdu 3415 Max Sum of Max-K-sub-sequence
- hdu 3415 Max Sum of Max-K-sub-sequence
- hdu 3415 Max Sum of Max-K-sub-sequence题解
- hdu 3415 Max Sum of Max-K-sub-sequence
- hdu 3415 Max Sum of Max-K-sub-sequence
- HDU 3415 Max Sum of Max-K-sub-sequence
- hdu 3415 Max Sum of Max-K-sub-sequence
- HDU 3415 Max Sum of Max-K-sub-sequence
- HDU Max Sum of Max-K-sub-sequence(单调队列)
- HDU 3415 Max Sum of Max-K-sub-sequence
- HDU - 3415 Max Sum of Max-K-sub-sequence
- HDU 3415 Max Sum of Max-K-sub-sequence
- HDU 3415 Max Sum of Max-K-sub-sequence
- HDU 3415 Max Sum of Max-K-sub-sequence
- Linux grep
- 拷贝构造函数的参数为什么必须使用引用类型
- 《Ophone应用开发权威指南》学习:Android 图形用户界面 之 动画(一)
- exit()与atexit()
- linux笔记一(基础认识)
- HDU 4377 - Sub Sequence
- tomcat配置多个端口指定多个应用
- FPGA点滴三
- GridView
- Unity学习系列笔记7:Unity杂谈。。。。
- poj 3667 Hotel(线段树 # 7)
- DataTable转泛型集合
- 如何删除ListView中item带删除按钮的一项
- 算法库