Description

ycc 喜欢古典音乐是一个 ZJUTACM 集训队中大家都知道的事情。为了更方便地聆听音乐,最近 ycc 特意把他的家搬到了爱乐大街(德语Philharmoniker-Straße)。在爱乐大街上,依次坐落着N座跟音乐有关的建筑,比如音乐厅、歌剧院等建筑。走在爱乐大街的路上,ycc 感到非常满意。过了一会儿,ycc 开始对这些建筑的门牌号产生了兴趣,这 N 个建筑各自有唯一的门牌号,范围从 1 到 N 。不过大概住在爱乐大街上的人都比较文艺,不喜欢循规蹈矩,他发现爱乐大街的门牌号并不是按照空间顺序依次从 1 到 N 的,而是任意顺序的,而且似乎没有什么规律可循。
ycc 不太习惯,于是他在纸上依次记录了每个建筑的门牌号,将他们写成一列。然后他在纸上开始比划起来。他发现门牌序列的逆序对个数为 K 。什么是逆序对呢?简单地说,就是两个门牌号,号码小的门牌号在号码大的门牌号后面。比如假设 N = 4 ,且门牌号序列是 1 3 4 2 ,那么这个序列的逆序对就有 (4, 2) 和 (3, 2) 两对,也就是说逆序对个数 K = 2 。那么现在,告诉你爱乐大街的建筑个数 N 和序列的逆序对个数 K,你知道爱乐大街的门牌号序列是怎么样的吗?

Input

第一行一个整数 T ,表示有 T 组数据。
每组数据有两个整数 N (1 ≤ N ≤ 105) 和 K (0 ≤ K ≤ N(N - 1) / 2 且 K ≤ 108) ,分别表示爱乐大街上的建筑个数和门牌号序列的逆序对个数。

Output

在一行中输出空格隔开的 N 个数(行末没有空格),表示原来的门牌号序列,每组数据占一行。若有多个序列满足要求,则输出字典序最小的序列。

Sample Input

3
5 1
4 2
2 0

Sample Output

1 2 3 5 4
1 3 4 2
 
题目大意:给一个N个自然数(1-N),要求找出逆序对数为K的最小字典序排列的那一个排列方式  

解题思路:想要最小字典序那么前面的数字就尽量少的向后面去,因此先计算出满足K个逆序数最少需要LMMN位数字(也就是后LMMN要调动) ②\又因为剩下的数字第一位要尽量小,所以剩下的LMNN-1个数必然倒序排列。③\又因为后LMMN-1个数倒序排列有NXN=(LMMN-1)*(LMMN-2)/2个逆序数,所以剩下数字的第一位的逆序数为K-NXN ④\所以可以确定剩下数字的排列方式。

 #include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int getLastMostMoveNum(int k){
return (int)ceil((1.0+sqrt(1.0+*k))/);
}
int getNumOfNiXu(int k){
return k*(k-)/;
}
int main(){
int T;cin>>T;
while(T--){
int N,K,i;
cin>>N>>K;
if(K==){//顺序输出即可
for(i=;i<N;i++)
cout<<i<<' ';
cout<<N<<'\n';
}else{//存在逆序对
int LMMN=getLastMostMoveNum(K);//计算后LMMN位要变化顺序
for(i=;i<=N-LMMN;i++)//输出前面不用调序的序列
cout<<i<<' ';
int Last[];//保存剩下的数字
for(int j=;i<=N;j++,i++)Last[j]=i;
int NXN=getNumOfNiXu(LMMN-);//计算LMMN-1个数完全逆序的逆序数NXN
//所以要用后LMMN位组成K个逆序数就要把Last[K-NXN]放到第一位,其他完全倒序
cout<<Last[K-NXN];
for(int j=LMMN-;j>=;j--)if(j!=K-NXN)cout<<' '<<Last[j];
cout<<'\n';
}
}return ;
}

 

[ACM_模拟] ZJUT 1155 爱乐大街的门牌号 (规律 长为n的含k个逆序数的最小字典序)的更多相关文章

  1. [ACM_模拟] ZJUT OJ 1139 七龙珠 (追及类问题,s-t图像,模拟)

    Description   话说孙悟饭与小林正在与刚造访地球的赛亚人贝吉塔交战,因为连贝吉塔的手下纳巴的实力也远在他俩之上,由于差距悬殊,小林不得不设脱离战场,去寻找正在修炼中的悟空求救,而赛亚人一伙 ...

  2. [ACM_模拟] POJ1068 Parencodings (两种括号编码转化 规律 模拟)

    Description Let S = s1 s2...s2n be a well-formed string of parentheses. S can be encoded in two diff ...

  3. [ACM_模拟][ACM_数学] LA 2995 Image Is Everything [由6个视图计算立方体最大体积]

    Description   Your new company is building a robot that can hold small lightweight objects. The robo ...

  4. [ACM_模拟] UVA 10881 Piotr's Ants[蚂蚁移动 数组映射 排序技巧]

    "One thing is for certain: there is no stopping them;the ants will soon be here. And I, for one ...

  5. [ACM_模拟][ACM_暴力] Lazier Salesgirl [暴力 懒销售睡觉]

    Description Kochiya Sanae is a lazy girl who makes and sells bread. She is an expert at bread making ...

  6. [ACM_模拟] ACM - Draw Something Cheat [n个长12的大写字母串,找出交集,按字母序输出]

    Description Have you played Draw Something? It's currently one of the hottest social drawing games o ...

  7. [ACM_模拟] ZOJ 3713 [In 7-bit 特殊输出规则 7bits 16进制]

    Very often, especially in programming contests, we treat a sequence of non-whitespace characters as ...

  8. [ACM_模拟] POJ 1094 Sorting It All Out (拓扑排序+Floyd算法 判断关系是否矛盾或统一)

    Description An ascending sorted sequence of distinct values is one in which some form of a less-than ...

  9. [ACM_模拟] The Willy Memorial Program (poj 1073 ,联通水管注水模拟)

    Description Willy the spider used to live in the chemistry laboratory of Dr. Petro. He used to wande ...

随机推荐

  1. mysql事件定时

    DELIMITER $$ MONTH STARTS '2013-01-07 11:20:00' ON COMPLETION PRESERVE ENABLE DO BEGIN CALL ps(); EN ...

  2. SWFTools参数

    CMD: d:\SWFTools>pdf2swf -o c:\2.swf -s flashversion=9 -s languagedir=c:\xpdf\xpdf-cinese-simplif ...

  3. Linux内核分析第四周学习总结:扒开系统调用的三层皮(上)

    韩玉琪 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.用户态.内核 ...

  4. 循序渐进Python3(三) -- 2 -- 内置函数

    上一篇我们介绍了21个最常用到的函数,简单列一下,帮助回忆巩固: 1.abs 2.dict 3.float 4.help 5.input 6.int 7.len 8.list 9.max 10.min ...

  5. 《机器学习实战》学习笔记——第14章 利用SVD简化数据

    一. SVD 1. 基本概念: (1)定义:提取信息的方法:奇异值分解Singular Value Decomposition(SVD) (2)优点:简化数据, 去除噪声,提高算法的结果 (3)缺点: ...

  6. iOS中UITableView数据源刷新了,但tableview当中的cell没有刷新

    你会不会遇到通过断点查看数据源模型的确刷新了,但是tableview没有刷新的情况,我遇到了,并通过下面的方法解决了,供大家参考! 在tableview中的数据源代理方法 p.p1 { margin: ...

  7. (转)SqlBulkCopy批量复制数据

    在.Net1.1中无论是对于批量插入整个DataTable中的所有数据到数据库中,还是进行不同数据源之间的迁移,都不是很方便.而 在.Net2.0中,SQLClient命名空间下增加了几个新类帮助我们 ...

  8. Scrum Meeting (Oct. 27 2014)

    软件工程是一门十分有意思的课程,它不仅锻炼了我们开发软件的能力,更是给了我们结队作业的机会,在团队协作中,我们学会了欣赏别人,学会了品鉴自己,学会了如何集思广益凝聚成一个锐意进取的集体.继单人单词查询 ...

  9. php 解析 视频 信息 封面 标题 图片 支持 优酷, 土豆 酷6 56 新浪 qq播客 乐视 乐视

    原文地址:http://www.lianyue.org/2013/2497/ <?php /** * 解析 视频信息 类 * * 支持 优酷, 土豆 酷6 56 新浪 qq播客 乐视 乐视 ** ...

  10. html、css、js文件加载顺序及执行情况

      HTML页面加载和解析流程 1. 用户输入网址(假设是个html页面,并且是第一次访问),浏览器向服务器发出请求,服务器返回html文件. 2. 浏览器开始载入html代码,发现<head& ...