当前位置: 首页 > news >正文

与斐波那契数列相关的对换题目 CF553B Kyoya and Permutation

定义标准循环表示法
即,对于每个循环,都将其最大值放在最前面,然后将这若干个循环按照最大值从小到大排列。这样,\([4,1,6,2,5,3]\)
标准循环表示法就是
\((4 2 1)(5)(6 3)\)

定义好的排列:原排列和标准循环表示一致

寻找第k个字段序的好的排列

此题手玩n=4的样例可以发现:
“好的排列”只能由1..n的顺序排列通过以下操作得来:

在原排列上,选择若干个不相交的,长度为2的区间,然后翻转每个区间。
这个性质瞪眼法有点难瞪
长度为 n 的序列最多有几个好的排列?
n只能与n-1翻转,于是,对于一个排列,n要么和n-1翻转,要么不翻转
n和n-1翻转的话,即 \(f(n)+=f(n-2)\)
n不翻转的话,即 \(f(n)+=f(n-1)\)

这就是一个斐波那契的式子!
\(f(n) = f(n-1)+f(n-2)\)

然后我们递归的填数字就好了,递归写起来很简单,只是有点难想

#include<iostream>
#include<vector>
using namespace std;
#define ffp(x,y,z) for(ll (x)=(y);(x)<=(z);(x++))
#define ll long long int
#define q_ read()
inline ll read()
{ll x = 0, f = 1;char ch = getchar();while (ch < '0' || ch>'9'){if (ch == '-')f = -1;ch = getchar();}while (ch >= '0' && ch <= '9')x = x * 10 + ch - '0', ch = getchar();return x * f;
}void solve()
{ll n = q_;ll k = q_;vector<ll>fb(n + 2, 0);vector<int>num(n + 2, 0);fb[2] = fb[1] = 1;ffp(i, 3, n)fb[i] = fb[i - 1] + fb[i - 2];auto bud = [&](auto&& bud, int l,int r, ll nk)->void{if (l > r) { return; }if (l == r){num[l] = l;return;}int len = r - l + 1;//需要构造一个长度为len的,值为nk的数列if (nk <= fb[len])//可以放进len里面{num[l] = l;bud(bud, l + 1, r, nk);//把下面的全部翻转,然后翻转当前这个}else//太大了,需要翻转{num[l] = l+1;num[l + 1] = l;bud(bud, l + 2, r, nk - fb[len]);}};bud(bud, 1, n, k);ffp(i, 1, n)cout << num[i] << " \n"[i == n];
}int main()
{int t = 1;while (t--){solve();}return 0;
}
http://www.gsyq.cn/news/16225.html

相关文章:

  • office办公软件
  • 2025年微信小程序开发:AR/VR与电商的最新案例 - 指南
  • 1 ACwing 271 Mr
  • 实用指南:B站视频下载器 v1.0.4|免登录下载1080P视频
  • 私有云大数据部署:从开发到生产(Docker、K8s、HDFS/Flink on K8s) - 详解
  • 17 LCA模拟赛1T2 剧院始于演员 题解
  • 3 2025 04 23 模拟赛总结
  • 14 收心赛3 T1 最长不降子序列 题解
  • 阿里开源规则引擎QLExpress
  • cf296b
  • 原版 Sunshine+虚拟显示器实现熄屏串流
  • 实用指南:万兴PDF手机版
  • 价值原语博弈协议:价值原语共识锚定原则
  • 25fall做题记录-October - Amy
  • 2025桩基检测机构最新企业咨询服务推荐排行榜,海上桩基检测,水上桩基检测服务推荐这十家公司!
  • 算法坑点
  • ASP.NET Core SignalR 身份认证集成指南(Identity + JWT) - 详解
  • LeetCode 139. 单词拆分(Word Break) - 动态规划深度解析 - 详解
  • 高考加油!UI界面生成器! - 教程
  • 分布式微服务系统架构第142集:全栈构建
  • 实用指南:云原生时代 Kafka 深度实践:03进阶特性与最佳实践
  • 实用指南:MyBatis 的动态 SQL
  • 【开源程序】 黑客帝国系列系统监控软件:基于PyQt5的全方位资源监控系统
  • VR/AR 显示瓶颈将破!铁电液晶技巧迎来关键突破
  • Axure 基础入门 - 实践
  • 博客园-awescnb插件-geek皮肤异常问题修复
  • ROM和RAM
  • 整理数据制作 直方图,箱须图,概率密度估计(KDE)图
  • 基于本地模型+多级校验设计的高效缓存,有效节省token数量(有点鸡肋doge) - 详解
  • 深入解析:Elasticsearch的集群管理介绍