B. Permutation Chain
Problem - B - Codeforces
B. 排列链
每次测试的时间限制 2 秒
每个测试的内存限制256 MB
输入标准输入
输出标准输出
长度为 n 的排列是从 1 到 n 的整数序列,使得每个整数在其中恰好出现一次。
令排列 p 的固定性为其中不动点的数量——使得 pj=j 的位置 j 的数量,其中 pj 是排列 p 的第 j 个元素。
你被要求构建一系列排列 a1,a2,...,从恒等排列开始(排列 a1=[1,2,...,n])。我们称其为排列链。因此,ai 是长度为 n 的第 i 个排列。
对于从 2 开始的每个 i,排列 ai 应该通过交换其中的任意两个元素(不一定是相邻的)从排列 ai-1 中获得。排列 ai 的固定性应严格低于排列 ai-1 的固定性。//从上一个排列中
考虑 n=3 的一些链:
a1=[1,2,3], a2=[1,3,2] - 这是一个长度为 2 的有效链。从 a1 到 a2,位置 2 和 3 上的元素交换,固定性从 3 减少到1.
a1=[2,1,3], a2=[3,1,2] — 这不是一个有效的链。对于 n=3,第一个排列应始终为 [1,2,3]。
a1=[1,2,3], a2=[1,3,2], a3=[1,2,3] — 这不是一个有效的链。从 a2 到 a3,位置 2 和 3 上的元素被交换,但固定性从 1 增加到 3。
a1=[1,2,3], a2=[3,2,1], a3=[3,1,2] — 这是一个长度为 3 的有效链。从 a1 到 a2,位置 1 和3 交换,固定性从 3 减少到 1。从 a2 到 a3,位置 2 和 3 的元素交换,固定性从 1 减少到 0。
找到最长的排列链。如果有多个最长的答案,打印其中任何一个。
输入
第一行包含一个整数 t (1≤t≤99)——测试用例的数量。
每个测试用例的唯一一行包含一个整数 n (2≤n≤100)——链中所需的排列长度。
输出
对于每个测试用例,首先,打印排列链 k 的长度。
然后打印 k 个排列 a1,a2,…,ak。 a1 应该是长度为 n ([1,2,…,n]) 的恒等排列。对于从 2 到 k 的每个 i,应该通过交换 ai-1 中的两个元素来获得 ai。它还应该具有比 ai-1 严格更低的固定性。
例子
输入复制
2
2
3
输出复制
2
1 2
2 1
3
1 2 3
3 2 1
3 1 2
#include<iostream>
#include<algorithm>
using namespace std;
int n,t;
int a[110];
int main()
{cin>>t;while(t--){cin>>n;int m=n;cout<<n<<endl;for(int i=0;i<n;i++){a[i]=i+1;cout<<a[i]<<' ';}cout<<endl;int i=-1;while (m -- ){i++;if(i==n-1)break;swap(a[i],a[i+1]);for(int j=0;j<n;j++)cout<<a[j]<<" ";cout<<endl;}}
}
可以改进一点,润了。。
B. Permutation Chain相关推荐
- 【CF 比赛记录】Roye_ack的艰难上分日常(35)
目录 #792 Div1+Div2 AC A1. Digit Minimization #Edu 129 Div2 !A2. Game with Cards #795 Div2 AC A3. Be ...
- docker报错:driver failed programming external connectivity on endpoint, iptables:No chain by that name
docker 报错: Error response from daemon: Cannot restart container hello: driver failed programming ext ...
- Pyhton 内置 itertools 模块chain、accumulate、compress、drop、take等函数使用
Python 内置的 itertools 模块使用了 yield 生成器. 1. chain 拼接迭代器 chain 函数实现元素拼接,原型如下,参数 * 表示可变的参数: chain(*iterab ...
- 设计模式之职责链模式(Chain of Responsibility)摘录
23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...
- 【C++】C++11 STL算法(七):排列操作(Permutation operations)、数值操作(Numeric operations)
排列操作(Permutation operations) 一.is_permutation 1.原型: template< class ForwardIt1, class ForwardIt2 ...
- LeetCode 76. Minimum Window Substring / 567. Permutation in String
76. Minimum Window Substring 典型Sliding Window的问题,维护一个区间,当区间满足要求则进行比较选择较小的字串,重新修改start位置. 思路虽然不难,但是如何 ...
- 职责链模式(Chain of Responsibility)(对象行为型)
1.概述 你去政府部门求人办事过吗?有时候你会遇到过官员踢球推责,你的问题在我这里能解决就解决,不能解决就推卸给另外个一个部门(对象).至于到底谁来解决这个问题呢?政府部门就是为了可以避免屁民的请求与 ...
- 1106 Lowest Price in Supply Chain
1. 本题和1090 Highest Price in Supply Chain适成对比,都是先构建一棵树,但本题是求最小层数和个数,链接题是求最大层数和个数.在极值更换和个数更新方面,两道题是一样的 ...
- EOS Chain/Wallet RPC API的PHP开发包
2019独角兽企业重金招聘Python工程师标准>>> 介绍一个EOS Chain/Wallet RPC API的PHP开发包. 开始 你可以查看EOS的RPC API参考,但要注意 ...
最新文章
- LSGO:祝大家新年快乐!
- 导航狗IT周报-2018年05月18日
- C++学习笔记5[函数]
- python使用复合语句def创建函数对象_Python 纯函数
- C# 序列化技术详解《转》
- Leetcode 448. Find All Numbers Disappeared in an Array
- php 1---100之间的和 几种方法
- 关于国内几大云计算平台
- 遥感图像预处理—步骤
- 大咖分享|王建峰:数据指标管理体系建设实践分享
- (SWAT-2)SWAT中土地利用数据库建立
- 如何利用区块链技术搭建企业新生态!
- Linux通过windows代理上网配置方式
- boost::math::binomial_distribution用法的测试程序
- Lerna 基本概念
- 计算机故障声音,不同的电脑故障声音分别是什么意思【详解】
- APP爬虫开发环境准备
- EAUML日拱一卒-微信小程序实战:位置闹铃 (6)-播放音频
- 如何自学大数据开发?
- checkbox选中背景色改变(checkbox美化)