HDU 6628 permutation 1 (暴力)
2019 杭电多校 5 1005
题目链接:HDU 6628
比赛链接:2019 Multi-University Training Contest 5
Problem Description
A sequence of length \(n\) is called a permutation if and only if it's composed of the first \(n\) positive integers and each number appears exactly once.
Here we define the "difference sequence" of a permutation \(p_1, p_2,...,p_n\) as \(p_2−p_1,p_3−p_2,...,p_n−p_{n−1}\). In other words, the length of the difference sequence is \(n−1\) and the \(i\)-th term is \(p_{i+1}−p_i\)
Now, you are given two integers \(N,K\). Please find the permutation with length \(N\) such that the difference sequence of which is the \(K\)-th lexicographically smallest among all difference sequences of all permutations of length \(N\).
Input
The first line contains one integer \(T\) indicating that there are \(T\) tests.
Each test consists of two integers \(N,K\) in a single line.
\(*\ 1≤T≤40\)
\(*\ 2≤N≤20\)
\(*\ 1\le K\le min(10^4, N!)\)
Output
For each test, please output \(N\) integers in a single line. Those \(N\) integers represent a permutation of \(1\) to \(N\), and its difference sequence is the \(K\)-th lexicographically smallest.
Sample Input
7
3 1
3 2
3 3
3 4
3 5
3 6
20 10000
Sample Output
3 1 2
3 2 1
2 1 3
2 3 1
1 2 3
1 3 2
20 1 2 3 4 5 6 7 8 9 10 11 13 19 18 14 16 15 17 12
Solution
题意:
定义排列 \(p_1, p_2, ... , p_n\) 的 "difference sequence" 为 \(p_2-p_1, p_3-p_2,...,p_n-p_{n-1}\)。现在给定 \(N\) 和 \(K\),求长度为 \(N\) 的所有排列中 "difference sequence" 的字典序第 \(K\) 小的排列。
题解:
暴力 STL 全排列
题目给定 \(K\) 的范围不超过 \(10^4\),而 \(8! = 40320 > K\),因此可以预处理 \(N <= 8\) 的情况,当 \(N > 8\) 时暴力求 \(a[1] = n\) 的全排列。
Code
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 10;
struct P {
int num[10];
string str;
} ans[10][maxn];
int cmp(P p1, P p2) {
return p1.str < p2.str;
}
int main() {
int a[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8};
for(int i = 2; i <= 8; ++i) {
int cnt = 1;
do {
// for(int j = 0; j < i; ++j) {
// cout << a[j] << " ";
// }
// cout << endl;
for(int j = 1; j <= i; ++j) {
ans[i][cnt].num[j] = a[j];
if(j < i) ans[i][cnt].str += a[j + 1] - a[j] + 'A';
}
++cnt;
} while(next_permutation(a + 1, a + 1 + i));
sort(ans[i] + 1, ans[i] + cnt, cmp);
// for(int j = 1; j < cnt; ++j) { for(int k = 1; k <= i; ++k) cout << ans[i][j].num[k] << ""; cout << endl;}
}
int T;
cin >> T;
while(T--) {
int n, k;
scanf("%d%d", &n, &k);
if(n <= 8) {
for(int j = 1; j <= n; ++j) {
printf("%d", ans[n][k].num[j]);
printf("%s", j == n? "\n": " ");
}
} else {
int a[30];
a[1] = n;
for(int i = 2; i <= n; ++i) {
a[i] = i - 1;
}
for(int i = 0; i < k - 1; ++i) {
next_permutation(a + 1, a + 1 + n);
}
for(int i = 1; i <= n; ++i) {
printf("%d", a[i]);
printf("%s", i == n? "\n": " ");
}
}
}
return 0;
}
HDU 6628 permutation 1 (暴力)的更多相关文章
- HDU 5753 Permutation Bo (推导 or 打表找规律)
Permutation Bo 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5753 Description There are two sequen ...
- hdu 5461 Largest Point 暴力
Largest Point Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid= ...
- hdu 5762 Teacher Bo 暴力
Teacher Bo 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5762 Description Teacher BoBo is a geogra ...
- hdu 5753 Permutation Bo 水题
Permutation Bo 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5753 Description There are two sequen ...
- HDU 3811 Permutation 状压dp
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3811 Permutation Time Limit: 6000/3000 MS (Java/Othe ...
- HDU 1333 基础数论 暴力
定义一种数位simth数,该数的各位之和等于其所有质因子所有位数字之和,现给出n求大于n的最小该种数,n最大不超过8位,那么直接暴力就可以了. /** @Date : 2017-09-08 14:12 ...
- HDU 4618 Palindrome Sub-Array 暴力
Palindrome Sub-Array 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=4618 Description A palindrome s ...
- HDU 2089 不要62 | 暴力(其实是个DP)
题目: http://acm.hdu.edu.cn/showproblem.php?pid=2089 题解: 暴力水过 #include<cstdio> #include<algor ...
- HDU 6115 Factory LCA,暴力
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6115 题意:中文题面 分析:直接维护LCA,然后暴力枚举集合维护答案即可. #include < ...
随机推荐
- 自定义jQuery Mobile工具栏按钮
自定义jQuery Mobile工具栏按钮 1.实现效果
- asp.net 随笔
20190625 网站发布后,添加文件,必须重启iis的应用程序池和网站才能使用添加的文件.
- OAccflow集成sql
SELECT * FROM PORT_EMP WHERE NO='18336309966'SELECT * FROM PORT_DEPT WHERE no='42DBAF50712C4046B09BC ...
- 【Vue】---Vue.config常用配置项
一.前言 Vue-cli3 搭建的项目 相比较Vue-cli2界面相对较为简洁,之前的build和config文件夹不见了,那么应该如何配置 如webpack等的配呢? 二.基本配置 只需要在项目的根 ...
- Java DOM解析器 - 查询XML文档
这是需要我们查询的输入XML文件: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 <?xml version="1.0"?> ...
- 专业解决 MySQL 查询速度慢与性能差!
Java技术栈 ,一般把连接数设置得大一些). 并发量:同一时刻数据库服务器处理的请求数量 3.超高的 CPU使用率:CPU资源耗尽出现宕机. 4.磁盘 IO:磁盘 IO性能突然下降.大量消耗磁盘性能 ...
- sort的排序及使用
sort() 方法在适当的位置对数组的元素进行排序,并返回数组.数组会按照字符的Unicode进行排序(把数组里面当成字符串处理) 1. 按升序排列: var arr=[1,11,2,22,5,4,0 ...
- CentOS7下yum安装Jenkins
Jenkins官网最新稳定版:https://pkg.jenkins.io/redhat-stable/ 1.下载依赖 sudo wget -O /etc/yum.repos.d/jenkins.re ...
- redis的密码设置
若连接redis时报错:Redis (error) NOAUTH Authentication required.,通常是由于redis设了密码但连接时却未提供密码引起的. 设置密码: 编辑redis ...
- STL_set
#include <iostream> #include <set> #include <string> #include <cstdio> using ...