Why so serious? --[NKU]schindlerlee

2010年03月29日星期一.pku2166 构造

2010年03月29日星期一.pku2166 构造
题意:要求一个序列,使这个序列进行heapsort 进行交换的次数最大。
我看到题目中有两个样例输出
n = 5: 5 4 3 2 1
n = 6: 6 5 3 2 4 1
我发现如果把6去掉,换上1,再翻下去就是5。
于是我想好像可以递推,然后就过了。。
POJ bug真多,下面的代码第一次交TLE,第二次375MS    
 1 
 2 const int N = 50100;
 3 int a[N],n,len;
 4 int main()
 5 {
 6   int i,j,k;
 7   scanf("%d",&n);
 8   a[1= 1,len = 1;
 9   for (k = 2;k <= n;k++) {
10       i = len;
11       while (i > 1) {
12           a[i] = a[i/2];
13           i /= 2;
14       }
15       a[1= k;
16       a[++len] = 1;
17   }
18   for (i = 1;i <= len;i++) {
19       printf("%d ",a[i]);
20   }
21   putchar(10);
22   return 0;
23 }
24 

posted on 2010-03-29 00:51 schindlerlee 阅读(1256) 评论(0)  编辑 收藏 引用 所属分类: 解题报告


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理