ZJNU 1133 - Subset sequence——中级
推出n=1到4时,An排列的种类数分别为
1 4 15 64
可得
(1+1)*2=4
(4+1)*3=15
(15+1)*4=64
...
故用一数列r[n]记录An的种类总数
当n=3时,列举出以下15种从大到小的排列
1
1 2
1 2 3
1 3
1 3 2
2
2 1
2 1 3
2 3
2 3 1
3
3 1
3 1 2
3 2
3 2 1
可得开头为1,2,3时分别由5种排列,并且这5种内都有一种是这个数自身
可得r[n]/n-1=r[n-1],又得出上面的递推公式
所以定义一个数组rd[n]=r[n]/n
rd[n]则表示开头相同时的种类数
取上面列举的排列第2到第5项
去掉第一个1后,得到
2
2 3
3
3 2
即用2和3两个数进行同样的排列
故得出解题步骤:
再定义一个新数列dat,存放1到n的数字
每次用(m-1)/rd[n]+1得出第一个数现在在dat数列中的位置,输出后取出,该位置其后的所有数字前移一位
然后m需要移动至下一层的相对位置
(p-1)*rd[n]减去前面p-1块,再把当前块的唯一一个只有一个数字组成的序列去掉
所以m-=(p-1)*rd[n]+1
因为输出了一个,所以n-=1
一直循环下去,直到m和n其一为0,结束循环
#include<stdio.h>
int main(){
int i,n,p,dat[];
long long m,r[],rd[];
r[]=r[]=rd[]=;
for(i=;i<=;i++){
r[i]=(r[i-]+)*i;
rd[i]=r[i]/i;
}
while(scanf("%d%lld",&n,&m)!=EOF){
for(i=;i<;i++)
dat[i]=i;
while(n&&m){
p=(m-)/rd[n]+;
printf("%d",dat[p]);
for(i=p;i<=n;i++)
dat[i]=dat[i+];
m-=(p-)*rd[n]+;
putchar(m>?' ':'\n');
n--;
}
}
return ;
}
ZJNU 1133 - Subset sequence——中级的更多相关文章
- ***1133. Fibonacci Sequence(斐波那契数列,二分,数论)
1133. Fibonacci Sequence Time limit: 1.0 secondMemory limit: 64 MB is an infinite sequence of intege ...
- HDU 2062:Subset sequence(思维)
Subset sequence Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tot ...
- HDU 2062 Subset sequence (找规律)
题目链接 Problem Description Consider the aggregate An= { 1, 2, -, n }. For example, A1={1}, A3={1,2,3}. ...
- HDU 2062 Subset sequence 数位dp,思路 难度:1
http://acm.hdu.edu.cn/showproblem.php?pid=2062 Subset sequence Time Limit: 1000/1000 MS (Java/Others ...
- URAL 1133. Fibonacci Sequence
题目链接 #include <cstdio> #include <string> #include <cstring> #include <iostream& ...
- HDU 2062 Subset sequence
我是把它当做一道数学题来做的. 这篇题解写的有点啰嗦,但是是我最原始的思维过程. 对于一个集合An= { 1, 2, …, n },在n比较小的情况下,在纸上按字典顺序把所有子集排列一下. 以n=3, ...
- 【HDOJ】2062 Subset sequence
这道题目非常好,饶了点儿圈子.我的思路是,先按照组排列.例如,1 2 31 2 2 1 3 11 2 3 2 1 3 ...
- hdu(2062)-Subset sequence 组合数学
意甲冠军:查找集合{1,2,3...n}第一m一个排列子. 收集的线索所行的大小. 例两个元素的排列子集合按字典树排列是:{1},{1,2},{2},{2,1}: 解法:一个一个元素来确定,每次把剩余 ...
- URAL 1133 Fibonacci Sequence(数论)
题目链接 题意 :给你第 i 项的值fi,第 j 项的值是 fj 让你求第n项的值,这个数列满足斐波那契的性质,每一项的值是前两项的值得和. 思路 :知道了第 i 项第j项,而且还知道了每个数的范围, ...
随机推荐
- 线性数据结构案例1 —— 单向链表中获取倒数k个节点
一.介绍 先遍历整个链表获取链表长度length,然后通过 (length-index) 方式得到我们想要节点在链表中的位置. 二.代码 public Node findLastIndexNode( ...
- 阿里巴巴技术总监全解中台架构19页ppt
//初创时,快速上线 单体架构至少撑了3年 //分布式,中间件基座 //平台化,内部是简单服务,对于业务侧就是快速上线 //平台化之后由于多平台协作问题,再次出现问题: 效率仍然不能匹配业务发展之需要 ...
- 简单的说一下react路由(逆战班)
现代前端大多数都是SPA(单页面程序),也就是只有一个HTML页面的应用程序,因为它的用户体验更好,对服务器压力更小,所以更受欢迎,为了有效的使用单个页面来管理原来多页面的功能,前端路由应运而生. 前 ...
- JavaScript—纯函数
定义 一个函数的返回结果只依赖它的参数,而且在计算过程中不会产生其他副作用,也就是不会对外部的数据造成影响或改变. 理解:函数的返回结果只依赖它的参数 const a= 1; const b= (c) ...
- html_js
<!-- js的特点:别名脚本 -由浏览器内置的JavaScript引擎执行代码. -解析执行:事先不编译,逐行执行 -面向对象:内置大量的现成对象 适宜: -客户端的数据计算:不需要保存和提交 ...
- Emoji表情符号兼容方案
Emoji表情符号兼容方案 一 什么是Emoji emoji就是表情符号:词义来自日语(えもじ,e-moji,moji在日语中的含义是字符) 表情符号现已普遍应用于手机短信和网络聊天软件. em ...
- 施魔法(DP)
链接:https://ac.nowcoder.com/acm/contest/3003/H来源:牛客网 题目描述 牛可乐有 n 个元素( 编号 1..n ),第 i 个元素的能量值为 ai. 牛可乐 ...
- 2020 年最流行的 Java 开发技术
不知不觉间,2020 年即将于十几天之后到来,作为技术圈中你,准备好迎接最新的变化了吗?在本文中,我们将以编程界最常用的编程语言 Java 为例,分享最为主流的技术与工具. 作者 | divyesh. ...
- Object arrays cannot be loaded when allow_pickle=False
问题再现 代码是Deep Learning with Python中的: from keras.datasets import imdb (train_data, train_labels), (te ...
- Linux下idea由于缺少相关权限导致的tomcat ERROR
昨天一天都在倒腾两个系统,也是醉了. 不过还好,系统修好了,在ubuntu下重新安装idea后,出现了这个错误: Intellij Idea Tmocat Error running Tomcat: ...