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相关推荐

  1. 【CF 比赛记录】Roye_ack的艰难上分日常(35)

    目录 #792 Div1+Div2 AC  A1. Digit Minimization #Edu 129 Div2 !A2. Game with Cards #795 Div2 AC  A3. Be ...

  2. 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 ...

  3. Pyhton 内置 itertools 模块chain、accumulate、compress、drop、take等函数使用

    Python 内置的 itertools 模块使用了 yield 生成器. 1. chain 拼接迭代器 chain 函数实现元素拼接,原型如下,参数 * 表示可变的参数: chain(*iterab ...

  4. 设计模式之职责链模式(Chain of Responsibility)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...

  5. 【C++】C++11 STL算法(七):排列操作(Permutation operations)、数值操作(Numeric operations)

    排列操作(Permutation operations) 一.is_permutation 1.原型: template< class ForwardIt1, class ForwardIt2 ...

  6. LeetCode 76. Minimum Window Substring / 567. Permutation in String

    76. Minimum Window Substring 典型Sliding Window的问题,维护一个区间,当区间满足要求则进行比较选择较小的字串,重新修改start位置. 思路虽然不难,但是如何 ...

  7. 职责链模式(Chain of Responsibility)(对象行为型)

    1.概述 你去政府部门求人办事过吗?有时候你会遇到过官员踢球推责,你的问题在我这里能解决就解决,不能解决就推卸给另外个一个部门(对象).至于到底谁来解决这个问题呢?政府部门就是为了可以避免屁民的请求与 ...

  8. 1106 Lowest Price in Supply Chain

    1. 本题和1090 Highest Price in Supply Chain适成对比,都是先构建一棵树,但本题是求最小层数和个数,链接题是求最大层数和个数.在极值更换和个数更新方面,两道题是一样的 ...

  9. EOS Chain/Wallet RPC API的PHP开发包

    2019独角兽企业重金招聘Python工程师标准>>> 介绍一个EOS Chain/Wallet RPC API的PHP开发包. 开始 你可以查看EOS的RPC API参考,但要注意 ...

最新文章

  1. LSGO:祝大家新年快乐!
  2. 导航狗IT周报-2018年05月18日
  3. C++学习笔记5[函数]
  4. python使用复合语句def创建函数对象_Python 纯函数
  5. C# 序列化技术详解《转》
  6. Leetcode 448. Find All Numbers Disappeared in an Array
  7. php 1---100之间的和 几种方法
  8. 关于国内几大云计算平台
  9. 遥感图像预处理—步骤
  10. 大咖分享|王建峰:数据指标管理体系建设实践分享
  11. (SWAT-2)SWAT中土地利用数据库建立
  12. 如何利用区块链技术搭建企业新生态!
  13. Linux通过windows代理上网配置方式
  14. boost::math::binomial_distribution用法的测试程序
  15. Lerna 基本概念
  16. 计算机故障声音,不同的电脑故障声音分别是什么意思【详解】
  17. APP爬虫开发环境准备
  18. EAUML日拱一卒-微信小程序实战:位置闹铃 (6)-播放音频
  19. 如何自学大数据开发?
  20. checkbox选中背景色改变(checkbox美化)

热门文章

  1. html视频自动缩放,HTML5 视频(videos)缩放JavaScript插件
  2. Linux下lvm中PV丢失找回方法
  3. 基于matlab进行一致性检验(ICC)
  4. Python可视化数据分析01、python环境搭建
  5. 港版 ME865 2.3.6root和刷机问题和补充说明
  6. 中国高智商协会(胜寒) 入会智商考试热身题答案
  7. EXCEL 加减乘除
  8. SpringBoot中 判断上传的文件类型 MultipartFile file
  9. HBase入门:shell模糊查询
  10. mysql分组查询学生平均年龄_MySQL学习-基础练习题