推出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——中级的更多相关文章

  1. ***1133. Fibonacci Sequence(斐波那契数列,二分,数论)

    1133. Fibonacci Sequence Time limit: 1.0 secondMemory limit: 64 MB is an infinite sequence of intege ...

  2. HDU 2062:Subset sequence(思维)

    Subset sequence Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tot ...

  3. HDU 2062 Subset sequence (找规律)

    题目链接 Problem Description Consider the aggregate An= { 1, 2, -, n }. For example, A1={1}, A3={1,2,3}. ...

  4. HDU 2062 Subset sequence 数位dp,思路 难度:1

    http://acm.hdu.edu.cn/showproblem.php?pid=2062 Subset sequence Time Limit: 1000/1000 MS (Java/Others ...

  5. URAL 1133. Fibonacci Sequence

    题目链接 #include <cstdio> #include <string> #include <cstring> #include <iostream& ...

  6. HDU 2062 Subset sequence

    我是把它当做一道数学题来做的. 这篇题解写的有点啰嗦,但是是我最原始的思维过程. 对于一个集合An= { 1, 2, …, n },在n比较小的情况下,在纸上按字典顺序把所有子集排列一下. 以n=3, ...

  7. 【HDOJ】2062 Subset sequence

    这道题目非常好,饶了点儿圈子.我的思路是,先按照组排列.例如,1            2           31 2         2 1        3 11 2 3      2 1 3  ...

  8. hdu(2062)-Subset sequence 组合数学

    意甲冠军:查找集合{1,2,3...n}第一m一个排列子. 收集的线索所行的大小. 例两个元素的排列子集合按字典树排列是:{1},{1,2},{2},{2,1}: 解法:一个一个元素来确定,每次把剩余 ...

  9. URAL 1133 Fibonacci Sequence(数论)

    题目链接 题意 :给你第 i 项的值fi,第 j 项的值是 fj 让你求第n项的值,这个数列满足斐波那契的性质,每一项的值是前两项的值得和. 思路 :知道了第 i 项第j项,而且还知道了每个数的范围, ...

随机推荐

  1. apache2+django+virtualenv 服务器部署实战

    目录 基本配置 配置python环境 安装 python.pip 安装 virtualenv 配置python虚拟环境 配置 apache2 安装 apache2 安装 mod-wsgi 服务 部署d ...

  2. Transaction Managament(事务管理二、Spring事务)

    Transaction Managament(事务管理二.Spring事务) Spring事务框架的优势 ​ Spring事务框架将开放过程中事务管理相关的关注点进行了分离,对这些关注点进行了抽象分离 ...

  3. Assignment写作需要掌握的两种表达方式

    在正式开始写Assignment之前都会进行文献检索和整理,选择适合Assignment选题的文献资料进行阅读和引用.对于文献中与自己的观点高度相关的参考资料要如何具体引用,而不造成抄袭或者增加文章的 ...

  4. SDN(Software Defined Network):软件定义网络----转载

    SDN(Software Defined Network):软件定义网络 传统的网络转发行为: 1)逐设备单独控制,纯分布式控制. 2)控制面和转发面在同一个设备中,耦合紧密. 管理员无法直接操控转发 ...

  5. Q9:Palindrome Number

    9. Palindrome Number 官方的链接:9. Palindrome Number Description : Determine whether an integer is a pali ...

  6. webservice wsdl文件标签讲解

    <?xml version="1.0" encoding="utf8"?> <wsdl:definitions targetNamespace ...

  7. Spring原理系列一:Spring Bean的生命周期

    一.前言 在日常开发中,spring极大地简化了我们日常的开发工作.spring为我们管理好bean, 我们拿来就用.但是我们不应该只停留在使用层面,深究spring内部的原理,才能在使用时融汇贯通. ...

  8. UVALive 4794 Sharing Chocolate DP

    这道题目的DP思想挺先进的,用状态DP来表示各个子巧克力块.原本是要 dp(S,x,y),S代表状态,x,y为边长,由于y可以用面积/x表示出来,就压缩到了只有两个变量,在转移过程也是很巧妙,枚举S的 ...

  9. SQL基础教程(第2版)第5章 复杂查询:5-2 子查询

    第5章 复杂查询:5-2 子查询 ● 一言以蔽之,子查询就是一次性视图( SELECT语句).与视图不同,子查询在SELECT语句执行完毕之后就会消失.● 由于子查询需要命名,因此需要根据处理内容来指 ...

  10. vue整合外部js

    vue引入外部jsimport { TrackLine } from "../../../../../static/js/trajectory.js";import { initM ...