HDU-2062 Subset sequence 递推
题意:给定1,2,3...N个数的集合,现在求所有非空子集(相同元素不同位置视为不同)按字典序排序后的第M个集合是什么?
思路:设i个不同元素组成的非空字典序子集为kind[i],通过递推关系计算出kind[i] = i * (kind[i] + 1)可从计算式上推倒。得到这个关系后就可以通过一位一位的枚举得到答案了。
代码如下:
#include <iostream> #include <cstring> using namespace std;int seq[25], idx; long long kind[25]; int vis[25];void deal(int N, long long M) {bool finish = false;while (!finish) {for (int i = 1; i <= N; ++i) {if (M == 1) {seq[++idx] = i;finish = true;break;} else if (M > (kind[N-1] + 1)) {M -= kind[N-1] + 1;} else {seq[++idx] = i;M -= 1;N -= 1;break;}} } }int main() {int N;long long M;kind[1] = 1; for (int i = 2; i <= 20; ++i) {kind[i] = i * (kind[i-1] + 1); // i个不同元素集合的非空字典序子集个数 }while (cin >> N >> M) {memset(vis, 0, sizeof (vis));idx = -1;deal(N, M);int first = 1;for (int i = 0; i <= idx; ++i) {int x;// seq记录的是一个伪序列,即确定一个数字后又将后面的序列重排 for (int j = 1; j <= N; ++j) {if (!vis[j]) --seq[i];if (!seq[i]) {if (first) {cout << j;first = 0;} else cout << " " << j;vis[j] = 1;break;}}}cout << endl;}return 0; }
HDU-2062 Subset sequence 递推相关推荐
- HDU 6092 Rikka with Subset 思维 递推
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=6092 题目描述: 给你一个集合的所有子集各个和, 让你找到这个集合, 输出字典序最小 解题思路: 下 ...
- hdu 2013 蟠桃记-递推-[解题报告]C++
蟠桃记 问题描述 : 喜欢西游记的同学肯定都知道悟空偷吃蟠桃的故事,你们一定都觉得这猴子太闹腾了,其实你们是有所不知:悟空是在研究一个数学问题! 什么问题?他研究的问题是蟠桃一共有多少个! 不过,到最 ...
- HDU - 3336 next运用+递推
题目的匹配应该也要看成一个文本串与另一个模式串的匹配过程 Text是以当前i结尾的后缀来匹配Pattern的前缀(非真) 这里的Pattern肯定是可以匹配成功的,直接由next来保证(next总是当 ...
- hdu 2086 A1 = ?(递推)
Problem Description 有如下方程:Ai = (Ai-1 + Ai+1)/2 - Ci (i = 1, 2, 3, -. n). 若给出A0, An+1, 和 C1, C2, -..C ...
- hdu 4472 Count(递推即dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4472 代码: #include <cstdio> #include <cstring ...
- Recursive sequence HDU - 5950 (递推 矩阵快速幂优化)
题目链接 F[1] = a, F[2] = b, F[i] = 2 * F[i-2] + F[i-1] + i ^ 4, (i >= 3) 现在要求F[N] 类似于斐波那契数列的递推式子吧, 但 ...
- HDU 6185 Covering 矩阵快速幂 递推
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=6185 题目描述: 一个4*n的矩形, 你用1*2的矩形覆盖有多少种方案, n <= 1e18 ...
- Codeforces 1106F Lunar New Year and a Recursive Sequence (数学、线性代数、线性递推、数论、BSGS、扩展欧几里得算法)...
Codeforces 1106F Lunar New Year and a Recursive Sequence (数学.线性代数.线性递推.数论.BSGS.扩展欧几里得算法) 哎呀大水题..我写了一 ...
- hdu 1133 Buy the Ticket(递推+精度精算)
做这道题之前可以先做:hdu 1267(递推方法和这道题是一样的知识没有精度计算)这是我的博客链接接:http://www.cnblogs.com/jiangjing/archive/2013/01/ ...
最新文章
- Linux下修改Mysql数据库存放路径
- MySQL中REGEXP正则查询同一个字段模糊搜索
- 查看Oracle中存储过程长时间被卡住的原因
- python和java哪个-Python与Java-你首选哪个?
- 【错误记录】Flutter 运行报错 Error -32000 received from application: There are no running service protocol
- Android控件之ConstraintLayout详解
- 【C++】const讲解
- HADOOP-Checkpoint原理
- 点到曲线的距离_如何从“圆锥”曲线到圆锥曲线
- java建立检索项语料库_sentilib_语料库项目_search模块的实现
- over oracle 不足补零,oracle的rank,over partition涵数使用
- 力扣题目——98. 验证二叉搜索树
- iframe框根据内容自适应高度
- 命名实体识别研究综述
- JetBrains(Intellij, pycharm)多行编辑模式
- linux下C语言获取微秒级时间
- CCNA考试题库中英文翻译版及答案16
- 长连接和短链接在服务器占用资源,TCP长连接和短链接及优缺点
- UE4 利用WEBUI插件完成UE与JS的交互 (UE4嵌入WEB)
- Android开发之自动更换壁纸