【简单数学】末日的传说

题目

题目描述

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

所有数据均有解。

分析

前天才做过道逆序排序的,看这个题立马做,结果全错,问题完全不一样,,,,,,,,,,呃呃呃
然后重新看了题,嗯,不会。。。。。。。难受

题目:要求当逆序达到一个值M的时候,世界末日就要降临。(瑟瑟发抖)。
什么是逆序:排在前面的那个比排在后面的那个更大,就是一个逆序。

这个题,需要一个一个数看,比如: 开始是 1,2,3,4,5,(样例)
那么当排成 5,4,3,2,1 逆序最多,有 (4+1)*4 /2 个,*用到公式(n-1)n /2(这里很好理解吧)

1…题目 要求出最小的那么排序。。
先看第一个数,1,如果 1在排在最后,那么最多就有 (4+1)* 4 /2 个逆序,这时候我们先放在一边,
看第二个数,2,(这时有数,2,3,4,5) 如果 2在最后,最多就有 (3+1)*3 /2 ==6个,6个大于
要求到达逆序数m=4(样例), 这样的情况就是说 不管你 1放在前面还是后面,我不需要1也能排出
逆序数m=4 的序列, 那么好极了,我们把1放在前面,(因为题目要排序最小)。。。
后面的推论都是一样,看当前数 的后一个数 ,它的最大逆序数是否大于m,如果大于,就放在前面,

2…如果小于呢? 如果小于,那就把数放在最后面,然后看有多少个逆序对,m减掉。(只看前面数对这一位数)
(比如2放在最后面,这时1放在最前, 在2前面比他大的有3,4,5,三个,那么逆序数为3,)

3… 我们开个数组来存放,前面都放数组前面,后面放数组后面,最后顺序输出数组就好了。

是不是太啰嗦了,,,,,,,还不是为了写清楚,(又啰嗦了哈。。。。。)

代码

#include<iostream>using namespace std;long long  n,m;
int a[50005];int main(){cin>>n>>m;int s=1,t=n;for(int  i=1;i<=n;i++){long long maxi = (n-i)*(n-i-1) /2;if(maxi >=m){a[s] = i;s++;}else{a[t] = i;t--;m -= n-i; }}for(int i=1;i<=n-1;i++){cout<<a[i]<<" ";}cout<<a[n]<<endl;return 0;
}

【简单数学】末日的传说相关推荐

  1. python 最小二乘回归 高斯核_从简单数学建模开始:08最小二乘准则的应用(附python代码)...

    模型拟合一般来说有这么三种: 切比雪夫近似准则 极小化绝对偏差之和 最小二乘准则 这几个原则各有各的适用范围.其中最小二乘准则是比较容易计算的.接下来我将简要的介绍最小二乘准则以及举例说明如何用pyt ...

  2. 洛谷试炼场-简单数学问题-二分查找

    洛谷试炼场-简单数学问题 P1147 连续自然数和 题解: 本题给定一个数n,求连续自然数的和为n,用一个前缀数组,low_bound,upper_bound,查找是否是同一个数.O(nlog(n)) ...

  3. 【简单数学】【NOIP 20008】笨小猴

    [简单数学][NOIP 20008]笨小猴 问题描述: 笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼.但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大! 这种方法 ...

  4. 经济金融领域简单数学建模和分析:MATLAB成本曲线方程和销售收入直线方程

    经济金融领域简单数学建模和分析:MATLAB成本曲线方程和销售收入直线方程 MATLAB代码: x=[0:0.1:5]; y=9*x; plot(x,y,'r','LineWidth',0.5) ho ...

  5. 斜45度瓦片地图(Staggered Tiled Map)里的简单数学

    瓦片地图(Tiled Map)系列文章: 斜45度瓦片地图(Staggered Tiled Map)里的简单数学 瓦片地图注意事项 前段时间在做游戏的地图编辑功能,我们是在一个斜45度视角的场景上,对 ...

  6. 保研机试——2数学问题(简单数学、最大公约/最小公倍、分数运算、素数、质因子分解、快速幂、高精度问题、常见数学公式总结、规律神器OEIS)

    1 简单数学 2 最大公约/最小公倍 3 分数运算 4 素数 5 快速幂 5 高精度问题 6 常见数学公式总结 7 规律神器OEIS 1 简单数学 (1)同余模定理:所谓的同余,顾名思义,就是许多的数 ...

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

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

  8. P1338 末日的传说

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

  9. 双代号网络图基础算法_9个简单数学算法在管理领域的运用

    数学,一直被认为是一个很让人头疼的学科,好像除了专业人士外,其他人都会"谈之色变",网上有个段子道出了真相:"初二那年,我弯腰捡了一支笔,从此再没听懂过数学课" ...

最新文章

  1. 阿里AI攻克心血管识别技术,冠脉中心线提取论文入选国际医学影像会议
  2. AAC音频文件时长计算
  3. Python__面向对象思想
  4. java hanoi塔问题_java 解决汉诺塔问题
  5. java开发框架_Java-程序员感悟-开发人员喜欢的框架之Spring
  6. 用 S5PV210 学习 Linux (一) 刷机(一)
  7. Mac查看Python安装路径和版本
  8. 微信小程序实现转义换行符
  9. 王秋杨的“前世”和她的“在路上”
  10. 使用SVN+apache搭建一个版本控制服务器
  11. 微信小程序的布局css样式
  12. c语言recy未定义标识符,求解这个C语言子程序什么意思
  13. flutter A problem occurred configuring project ‘:shared_preferences_linux‘.
  14. html打开txt文件 乱码怎么解决,记事本文件打开是乱码怎么办 乱码如何解决
  15. AI编程 亚马逊 CodeWhisperer VS GitHub Copilot
  16. SVAC 2.0安全系统组成
  17. EAP-TTLS预研报告
  18. 微信公众号开发本地环境搭建
  19. BI 如何让SaaS产品具有 “安全感”和“敏锐感”(上)
  20. STM32单片机与Openmv的串口通信

热门文章

  1. python技术文档
  2. re:从零开始的Qt世界冒险生活
  3. java走迷宫_走迷宫问题Java递归
  4. 线段树染色问题(例题为poj2777)
  5. Failed to obtain JDBC Connection; nested exception is com.mysql.cj.jdbc.exceptions.CommunicationsEx
  6. Teamcenter Folder
  7. FFmpeg c++ 报错合集
  8. 2019第十届蓝桥杯JAVA G组题解
  9. 吴洪声十问戴跃: 域名圈巴菲特是如何炼成的?
  10. The page has expired due to inactivity.Please refresh and try again.