传送门

文章目录

  • 题意:
  • 思路:

题意:

思路:

逆康托展开板子

// Problem: UVA11525 Permutation
// Contest: Luogu
// URL: https://www.luogu.com.cn/problem/UVA11525
// Memory Limit: 0 MB
// Time Limit: 3000 ms
//
// Powered by CP Editor (https://cpeditor.org)//#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math")
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4.1,sse4.2,avx,avx2,popcnt,tune=native")
//#pragma GCC optimize(2)
#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<map>
#include<cmath>
#include<cctype>
#include<vector>
#include<set>
#include<queue>
#include<algorithm>
#include<sstream>
#include<ctime>
#include<cstdlib>
#include<random>
#include<cassert>
#define X first
#define Y second
#define L (u<<1)
#define R (u<<1|1)
#define pb push_back
#define mk make_pair
#define Mid ((tr[u].l+tr[u].r)>>1)
#define Len(u) (tr[u].r-tr[u].l+1)
#define random(a,b) ((a)+rand()%((b)-(a)+1))
#define db puts("---")
using namespace std;//void rd_cre() { freopen("d://dp//data.txt","w",stdout); srand(time(NULL)); }
//void rd_ac() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//AC.txt","w",stdout); }
//void rd_wa() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//WA.txt","w",stdout); }typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int,int> PII;const int N=1000010,mod=1e9+7,INF=0x3f3f3f3f;
const double eps=1e-6;int n;
int a[N];
struct Node {int l,r;int cnt;
}tr[N<<2];void pushup(int u) {tr[u].cnt=tr[L].cnt+tr[R].cnt;
}void build(int u,int l,int r) {tr[u]={l,r};if(l==r) {tr[u].cnt=1;return;}build(L,l,Mid); build(R,Mid+1,r);pushup(u);
}void change(int u,int pos) {if(tr[u].l==tr[u].r) {tr[u].cnt=0;return;}if(pos<=Mid) change(L,pos);else change(R,pos);pushup(u);
} int query(int u,int cnt) {if(tr[u].l==tr[u].r) return tr[u].l;if(tr[L].cnt>cnt) return query(L,cnt);else return query(R,cnt-tr[L].cnt);
}int main()
{//  ios::sync_with_stdio(false);
//  cin.tie(0);int _; scanf("%d",&_);while(_--) {scanf("%d",&n);for(int i=1;i<=n;i++) scanf("%d",&a[i]);build(1,1,n);for(int i=1;i<=n;i++) {int pos=query(1,a[i]);change(1,pos);printf("%d%c",pos,i==n? '\n':' ');}}return 0;
}
/**/

UVA11525 Permutation 逆康托展开相关推荐

  1. 数论--康托展开与逆康托展开模板

    ACM常用模板合集 #include<bits/stdc++.h>using namespace std; const int MAX = 13; int Fac[MAX],N; //求出 ...

  2. 数学--数论--康托展开与逆康托展开

    康托展开 可以理解为把一个全排列映射到一个数上面,因为全排列如果按照从小到大或者从大到小,肯定是有一个确定的序列的. 一般是从小到大的序列个数.我们就是要求出这个序列的位置.,想法很简答,就是求出前面 ...

  3. 基本算法——康托展开与逆康托展开

    含义 康托展开是一个全排列到一个自然数的双射,常用于构建哈希表时的空间压缩. 康托展开的实质是计算当前排列在所有由小到大全排列中的顺序,因此是可逆的. 原理 X = s1(n-1)! + s2(n-2 ...

  4. 详解康托展开与逆康托展开

    康托展开 rank=an(n−1)!+an−1(n−2)!+⋯+a10! 再举个例子说明. 在(1,2,3,4,5)5个数的排列组合中,计算 34152的康托展开值. 首位是3,则小于3的数有两个,为 ...

  5. 康托展开与逆康托展开详解

    文章目录 康拓展开 运用 板子 逆康托展开 板子 康拓展开 康托展开是一个全排列到一个自然数的双射,常用于构建哈希表时的空间压缩. 康托展开的实质是计算当前排列在所有由小到大全排列中的名次,因此是可逆 ...

  6. 关于康托展开和逆康托展开详解,及python代码

    在LeetCode上有这样一道题: 60. 第k个排列 给出集合 [1,2,3,-,n],其所有元素共有 n! 种排列. 按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下: ...

  7. 康托展开和逆康托展开

    简述 康托展开是一个全排列到一个自然数的双射,常用于构建hash表时的空间压缩.设有n个数(1,2,3,4,-,n),可以有组成不同(n!种)的排列组合,康托展开表示的就是是当前排列组合在n个不同元素 ...

  8. java实现排程算法_康托展开算法和逆康托展开算法[Java实现]

    基于这篇介绍我实现了基于Java的算法 都能看懂的康托展开_ltrbless的博客-CSDN博客​blog.csdn.net 条件 一个数组:[1, 2, 3, 4, 5] 康托展开算法 找出 524 ...

  9. 【康拓展开逆康托展开】

    百度百科就够了 自己的体会: 康托展开是基于比他小的前面的个数来进行计算的        另外康托展开也是一个数组到一个数的映射,因此也是可用于hash,用于空间压缩.比如在保存一个序列,我们可能需要 ...

最新文章

  1. 四种类型的数据分析模式
  2. docker 镜像的使用和下载
  3. grep -v XXXXX
  4. Eclipse,NetBeans及IntelliJ—Java IDE大战之NetBeans篇
  5. SVN不是配置管理系统
  6. 如何访问云端的tcpserver_远程读写FTP文件,花生壳盒子+Serv-U快速实现远程访问...
  7. 和我一起学WCF(6):宿主(Hosting)
  8. openssl创建私有ca
  9. MachineLearning(7)-决策树基础+sklearn.DecisionTreeClassifier简单实践
  10. Python2.7升级至Python3.6
  11. J2SE:Java环境搭建探究环境变量
  12. 开源GIS(十)——openlayers中加载在线标准与自定义切片
  13. 体系建模系统软件:体系结构建模工具攻略
  14. 开心消消乐h5版游戏案例分享
  15. 查看计算机显卡驱动版本,驱动人生检测选择显卡版本教程 电脑显卡公版和官方驱动区别...
  16. Ticket管理工具:Redmine
  17. Intel SGX入门
  18. 程序人生 - Nature封面:脑机接口突破,可将脑中“笔迹”转为屏幕字句,速度创纪录,准确率超高
  19. 【大数据 BI】传统BI流程
  20. 在eclipse上使用Maven创建简单项目

热门文章

  1. c++ long 转 short_C精品编程之——C语言的数据类型、运算符、表达式,精品课程...
  2. 一击即中的表白方式,学会了吗?
  3. 让TA们告诉你,疫情当下如何更彪悍的成长
  4. 修车工在生命最后,才知道自己的儿子是如今世界首富!
  5. 普通人和程序员看到的树
  6. inputn函数与input函数的区别
  7. cgi备份还原和ghost有什么区别_手动GHOST还原重装系统详细教程
  8. solr 配置mysql数据源_solr data-config.xml配置文件的见解mysql数据源
  9. java spark读写hdfs_Spark读取HDFS数据输出到不同的文件
  10. java读取图片缩略方法_java 图片缩略图的两种方法