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

排列置换环上构造:1025T3

http://cplusoj.com/d/senior/p/SS231025C

排列构造的新知识:上置换环!

我们发现朴素做法是 n 2 n^2 n2 级别的,但数据范围希望我们是 n 2 2 \frac {n^2}2 2n2 级别的。我们发现我们暴力复制序列显得非常蠢,因为很多序列前后我们其实可以考虑合并。

至于怎么合并?我们直接维护指针。然后我们现在要“运”东西到相应位置。而“运”东西的期望步数是 n 2 \frac n 2 2n 的。

然后这个证明直接上置换环。我们相当于一个个置换环来搞。而置换环个数的期望是 ln ⁡ \ln ln 个.

#include<bits/stdc++.h>
using namespace std;
//#define int long long
inline int read(){int 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<<1)+(x<<3)+(ch^48);ch=getchar();}return x*f;}
#define Z(x) (x)*(x)
#define pb push_back
//mt19937 rand(time(0));
//mt19937_64 rand(time(0));
//srand(time(0));
#define N 1010
//#define M
//#define mo
int n, m, i, j, k, T;
int a[N], b[N], p; 
vector<int>ans; signed main()
{
//	freopen("in.txt", "r", stdin);
//	freopen("out.txt", "w", stdout);freopen("yacolorful.in", "r", stdin);freopen("yacolorful.out", "w", stdout);
//	T=read();
//	while(T--) {
//
//	}n=read(); for(i=1; i<=n; ++i) a[i]=read(), ans.pb(i), b[i]=i; 
//	printf("%d\n", n); 
//	for(i=1; i<=n; ++i) printf("%d ", a[i]); printf("\n"); for(p=2; ; ++p) {if(p==n+1) p=2; if(b[1]!=a[1]) {if(a[p]==b[1]) swap(b[1], b[p]); }else  {if(a[p]!=b[p]) k=0, swap(b[1], b[p]); else ++k; }ans.pb(b[p]); if(k>n) break; }while(p+1<=n) ans.pb(b[p+1]), ++p; for(i=1; i<=n; ++i) ans.pb(a[i]); printf("%d\n", ans.size()); for(auto t : ans) printf("%d ", t); return 0;
}
http://www.lryc.cn/news/205937.html

相关文章:

  • Stable diffusion的一些参数意义及常规设置
  • 成员变量、静态成员变量、局部变量、常量的内存区域
  • 网络协议--IGMP:Internet组管理协议
  • 网络安全https
  • xcode Simulator 手动安装
  • Unity中国、Cocos为OpenHarmony游戏生态插上腾飞的翅膀
  • Monaco Editor编辑器
  • ARM | 传感器必要总线IIC
  • Mybatis中Resources和ClassLoaderWrapper
  • Linux多线程服务端编程:使用muduo C++网络库 学习笔记 第三章 多线程服务器的适用场合与常用编程模型
  • windows下使用FFmpeg开源库进行视频编解码完整步聚
  • 如何更改eclipse的JDK版本
  • HarmonyOS第一课运行Hello World
  • 解决el-tooltip滚动时悬浮框相对位置发生变化
  • Java精品项目源码第61期汽车零件销售商城系统(代号V063)
  • Python OpenCV剪裁图片并修改对应的Labelme标注文件
  • 【JAVA学习笔记】44 - 注解,元注解
  • Android 安卓Kotlin-协程
  • SSO 系统设计_token 生成
  • 电表安数大小和省电有关吗?
  • 树上形态改变统计贡献:1025T4
  • 如何处理与智能床相关的医疗建议和医疗器械证明?
  • 云原生之深入解析如何合并多个kubeconfig文件
  • Netty实战-实现自己的通讯框架
  • S4.2.4.3 Electrical Idle Sequence(EIOS)
  • MySQL的优化利器:索引条件下推,千万数据下性能提升273%
  • 回归预测 | MATLAB实现BO-BiLSTM贝叶斯优化双向长短期神经网络多输入单输出回归预测
  • SOCKS5代理在全球电商、游戏及网络爬虫领域的技术创新
  • Flutter extended_image库设置内存缓存区大小与缓存图片数
  • 第2篇 机器学习基础 —(1)机器学习概念和方式