题目描述

只要是参加jsoi活动的同学一定都听说过Hanoi塔的传说:三根柱子上的金片每天被移动一次,当所有的金片都被移完之后,世界末日也就随之降临了。

在古老东方的幻想乡,人们都采用一种奇特的方式记录日期:他们用一些特殊的符号来表示从1开始的连续整数,1表示最小而N表示最大。创世纪的第一天,日历就被赋予了生命,它自动地开始计数,就像排列不断地增加。

我们用1-N来表示日历的元素,第一天日历就是  1, 2, 3, … N

第二天,日历自动变为 1, 2, 3, … N, N-1……每次它都生成一个以前未出现过的“最小”的排列——把它转为N+1进制后数的数值最小。

日子一天一天地过着。有一天,一位预言者出现了——他预言道,当这个日历到达某个上帝安排的时刻,这个世界就会崩溃……他还预言到,假如某一个日期的逆序达到一个值M的时候,世界末日就要降临。

什么是逆序?日历中的两个不同符号,假如排在前面的那个比排在后面的那个更大,就是一个逆序,一个日期的逆序总数达到M后,末日就要降临,人们都期待一个贤者,能够预见那一天,到底将在什么时候到来?

格式

输入格式:

只包含一行两个正整数,分别为N和M。

输出格式:

输出一行,为世界末日的日期,每个数字之间用一个空格隔开。

样例

输入样例#1: 复制

5 4
输出样例#1: 复制

1 3 5 4 2

说明

对于10%的数据有N <= 10。

对于40%的数据有N <= 1000。

对于100%的数据有 N <= 50000。

所有数据均有解。

思路:我们知道,逆序对的个数,在最大情况下,是n*(n-1)/2。

所以枚举位置1—n,计算i放在当前位置时,后面能产生的最多逆序对是多少,如果能超过m,就把i放在当前位置。

如果不能,说明这个数太小了,需要放在后面增加逆序对个数,把它扔到未确定区间的最后一个。

同时,因为把一个小数放到了后面,接下来未确定区间中不管有多少逆序对,其中的每一个数,都会与这个数产生一对逆序对,所以我们需要减小m,减小的长度就是区间长度。

代码:

 #include"bits/stdc++.h"
#define ll long long
#define cl(x) scanf("%lld",&x)
#define pl(x) printf("%lld\n",x)
using namespace std;
const int N = 1e6 + ;
ll n,m;
int a[N];
int main() {
cl(n),cl(m);
ll l=,r=n;
for(int i=;i<=n;i++){
ll tmp=(n-i)*(n-i-)/;
if(tmp>=m) a[l++]=i;
else a[r--]=i,m-=r-l+;
}
for(int i=;i<=n;i++) printf("%d%c",a[i],i==n?'\n':' '); return ;
}

最新文章

  1. iOS手势解锁、指纹解锁--Swift代码
  2. Magento Connector: Error: Please check for sufficient write file permissions
  3. docker中启动mysql报错
  4. js控制全屏窗口
  5. Maven的依赖范围
  6. Druid.io索引过程分析——时间窗,列存储,LSM树,充分利用内存,concise压缩
  7. windows下关闭80端口被system占用的情况
  8. 从Wordpress迁移到Jekyll
  9. Codeforces 711 C. Coloring Trees (dp)
  10. php中用户自定义排序
  11. Oracle 12C 简介
  12. MVC(3DOnLine)开发过程的一些难点以及知识点
  13. c#程序连接mysql,报&quot;Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation &#39;=&#39;&quot;的解决方案
  14. printf不能直接输出string类型
  15. Java多线程的调度策略
  16. wtf!rds数据同步居然出问题了--菜鸟db的数据修复历程
  17. Prometheus Operator 架构 - 每天5分钟玩转 Docker 容器技术(178)
  18. 信号(1): signal
  19. C++入门
  20. [0,x)的随机数

热门文章

  1. elasticsearch增删改查crudp-----1
  2. 3.HTML DOM
  3. 解决浏览器窗口缩小出现白色背景的bug
  4. iOS - 通过view查找所在(viewController)
  5. [原创]在Debian9上配置NAS
  6. strdup和strndup函数
  7. SaberSama【css总结】
  8. centos6.5_64bit-Tomcat7安装部署
  9. jquery中$.ajax()方法使用详解
  10. 复制windows CMD命令行中的内容