题目描述

只要是参加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。

所有数据均有解。

思路

这道题其实一开始我是开始从前往后按照字典序再加归并求逆序对,结果只A了一个点,其他的全TLE,后来看了题解区我傻了,这道题是让你直接构建一个符合条件的数列。
当n=1:最多有0个逆序对;
当n=2:最多有1个逆序对;(1)
当n=3:最多有3个逆序对;(2+1)
当n=4:最多有6个逆序对;(3+2+1)
当n=5:最多有10个逆序对;(4+3+2+1)
以n=5为例:max=(1+4)×42max=\frac{(1+4)\times4}{2}max=2(1+4)×4​
可推出:max=n×(n−1)2max=\frac{n\times(n-1)}{2}max=2n×(n−1)​
所以每当你放下去一个数的时候先判断剩余的位置最多可以生成多少个逆序对(max′=(n−i)×(n−i−1)2max'=\frac{(n-i)\times(n-i-1)}{2}max′=2(n−i)×(n−i−1)​),如果比m多,那么目前就可以先不考虑生成逆序对的问题,因为剩下的那些位置就够了,所以将i靠前放,否则靠后放,记得每一次靠后放了以后要对m值进行更新,因为一旦目前这个值靠后放了,再加上以后的数都比这个数要大且在这个数之前,所以要减去这个数注定将生成的逆序对数。

源码

#include<bits/stdc++.h>
using namespace std;
long long int a[50010];
long long int temp, m, n;
int main()
{scanf_s("%lld %lld", &n, &m);long long int b = 1, e = n;for (int i = 1; i <= n; i++){temp = (n - i) * (n - i - 1) / 2;if (temp >= m)a[b++] = i;else{a[e--] = i;m -= (e - b + 1);}}for (int i = 1; i <= n; i++)printf("%d ", a[i]);return 0;
}

P1338 末日的传说(C++_数论_递推)相关推荐

  1. P1338 末日的传说

    题目描述 只要是参加jsoi活动的同学一定都听说过Hanoi塔的传说:三根柱子上的金片每天被移动一次,当所有的金片都被移完之后,世界末日也就随之降临了. 在古老东方的幻想乡,人们都采用一种奇特的方式记 ...

  2. 洛谷p1338末日的传说(思维好题,数学)

    题目链接:https://www.luogu.org/problemnew/show/P1338 题目暴力全排列是肯定不行的. 比较难想啊,关键抓住字典序小也就是小的数尽量往前排,找剩余的逆序对数! ...

  3. python递推公式_线性代数求解递推形式数列的通项公式

    以前学习矩阵知识的时候,一直觉得在玩数学游戏,没有多少真实的应用,但此次解决实际的问题时,方显得矩阵的强大,其实还可以使用其他方式进行通项推导,但此方法是最简洁.最漂亮的,原来数学还是很有用的! 此问 ...

  4. MATLAB_4-形态学_腐蚀_膨胀_灰度图的腐蚀以及膨胀_开运算_闭运算_文章末尾有几个素材例子

    素材链接: MATLAB_4-形态学_课程需要的素材 记住单词拼写: 腐蚀 erode 膨胀 dilate 开运算 open 闭运算 close 图像重建 imreconstruct reconstr ...

  5. 计算机会计课程试题及答案,计算机会计第2次作业_报表_附答案

    计算机会计第2次作业_报表_附答案 (6页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 . . . . .<计算机会计>课程作业 ...

  6. java语言仅支持单重继承_java语言程序设计基础篇习题_复习题_第十一章

    java语言程序设计基础篇习题_复习题_第十一章 11.1 下面说法是真是假?一个子类是父类的子集. 11.2 使用什么关键字来定义一个子类 11.3 什么是单一继承?什么是多重继承?java支持多重 ...

  7. 宏定义中的#、##操作符和... 、 _ _VA_ARGS_ _解析

    #   #符号作为一个预处理运算符,它可以把语言符号转化成字符串.例如,如果x是一个宏参量,那么#x可以把参数名转化成相应的字符串.该过程称为字符串化(stringizing). 例子 #incldu ...

  8. 计算机软件专业 课程,_计算机软件_专业的课程设置.pdf

    _计算机软件_专业的课程设置.pdf 机械职业教育 2007.5 专业建设 - - 27 计算机软件 专业的课程设置 < > ◎ 方一新 王 竝 摘 要 职业教育必须坚持以就业为导向 加快 ...

  9. C++语言程序设计视频教程_清华大学_郑莉(基础篇+进阶篇)

    C++语言程序设计视频教程_清华大学_郑莉(基础篇) 第一章:绪论 1.1 导学 1.2 计算机系统简介 1.3计算机语言和程序设计方法的发展 1.4 面向对象的基本概念 1.5 程序的开发过程 1. ...

  10. 统计_statistics_不同的人_大样本_分析_统计方法_useful ?

    统计_statistics_不同的人_大样本_分析_ 转载于:https://www.cnblogs.com/books2read/p/11313825.html

最新文章

  1. Adobe flash cs5 的Java运行时环境初始化错误 完美解决方法
  2. apache vhost
  3. 13个球一个天平,现知道只有一个和其它的重量不同,怎样称才能用三次就找到那个球?...
  4. eSpeak: Linux 文本转语音工具
  5. python怎么调用局部变量_python基础:局部变量--全局变量的使用
  6. android实现自动横竖屏切换,android 中实现横竖屏切换【原创】
  7. c语言用链表写管理系统程序,c语言课程设计职工信息管理系统单链表实现程序源代码-20210401015126.docx-原创力文档...
  8. ajax php 返回表单,ajax返回页面session信息(PHP)
  9. Fatal error in launcher: Unable to create process using ''之解决办法
  10. Web系统Login拦截器
  11. Halcon 深度学习(一):分类
  12. 赢在微点答案专区英语_学乐必赢练习册30册免费领,15年级数学、语法、写作、阅读、词汇一网打尽!...
  13. EAS后台事物调度时间间隔所用的QuartZ Cron表达式解析。
  14. Integer和String必问知识点,面试字节跳动Java工程师该怎么准备
  15. 新手必看:PS修图的基本步骤
  16. 微信语音识别开放平台
  17. 华为手机克隆在哪个文件夹_华为手机克隆软件怎么使用?手机克隆APP操作步骤以及下载地址详细介绍[多图]...
  18. c语言实现123456789变为147258369的方式是输出
  19. 怎么让程序运行结果里不出现ans(两个特殊例子)
  20. 中国各城市首轮感染高峰期预测!(最新更新版)

热门文章

  1. java从键盘读入数据_关于Java中从键盘读入各种数据的方式
  2. 启发函数 (Heuristic Function) —Octile
  3. unity3D制作拼图游戏
  4. 提高情商,从这几方面做
  5. 加州大学戴维斯分校 计算机科学,加州大学戴维斯分校计算机科学硕士设置
  6. 【分库分表ShardingSphere】
  7. JAVA Swing界面美化 -付费界面库
  8. 饭店点餐系统之系统网络结构
  9. Tushare财经数据调取方法(行情数据)
  10. 数据结构选择练习题(有解析)