https://www.lydsy.com/JudgeOnline/problem.php?id=4104

对于一个长度为N的字符串,我们在字符串的末尾添加一个特殊的字符"."。之后将字符串视为一个环,从位置1,2,3,...,N+1为起点读出N+1个字符,就能得到N+1个字符串。

比如对于字符串“ABCAAA”,我们可以得到这N+1个串:
ABCAAA.
BCAAA.A
CAAA.AB
AAA.ABC
AA.ABCA
A.ABCAA
.ABCAAA
接着我们对得到的这N+1个串按字典序从小到大进行排序(注意特殊字符“.”的字典序小于任何其他的字符)结果如下:
.ABCAAA
A.ABCAA
AA.ABCA
AAA.ABC
ABCAAA.
BCAAA.A
CAAA.AB
最后,将排序好的N+1个串的最后一个字符取出,按照顺序排成一个新的字符串,也就是上面这个表的最后一列,就是加密后的密文“AAAC.AB”。
请通过加密后的密文求出加密前的字符串。

很神奇的问题……我的智商果然不够用……

我们知道了每个数是什么,还知道了每个数为结尾时第一个数的排名为多少。

那么我们从0开始查排名我们就能得到第一位数的排名,将这个数作为最后一位,则第二位数就成了第一位,于是查询此时的排名就能知道第二位的排名了……以此类推。

我们有了第x位数的排名,于是我们把所有的字符排个序我们不就知道第x位数是什么了吗。

于是这题我们就做完了。

#include<map>
#include<cmath>
#include<stack>
#include<queue>
#include<cstdio>
#include<cctype>
#include<vector>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N=2e5+;
inline int read(){
int X=,w=;char ch=;
while(!isdigit(ch)){w|=ch=='-';ch=getchar();}
while(isdigit(ch))X=(X<<)+(X<<)+(ch^),ch=getchar();
return w?-X:X;
}
struct node{
int a,rk;
}a[N];
int n,m;
inline int cmp(node a,node b){
return a.a==b.a?a.rk<b.rk:a.a<b.a;
}
int main(){
n=read(),m=read();
for(int i=;i<=n;i++){
a[i].a=read();a[i].rk=i;
}
sort(a,a+n+,cmp);
int t=a[].rk;
for(int i=;i<=n;i++){
printf("%d ",a[t].a);
t=a[t].rk;
}
return ;
}

+++++++++++++++++++++++++++++++++++++++++++

+本文作者:luyouqi233。               +

+欢迎访问我的博客:http://www.cnblogs.com/luyouqi233/+

+++++++++++++++++++++++++++++++++++++++++++

最新文章

  1. Alwayson的IP冲突
  2. SASS 初学者入门
  3. noip模拟赛(一)密码
  4. 更新插件时提示“正在更新缓存”“正在等待jockey-backend退出”
  5. php curl封装类
  6. 【Android】自带Theme
  7. C# 5.0 Async函数的提示和技巧
  8. SQL远程备份
  9. Day1-python理论基础
  10. hdu3586 Information Disturbing 树形DP+二分
  11. Android———最详细的系统对话框使用
  12. 主备(keepalived+nginx)
  13. 前后端不分离的springboot项目问题:页面框架问题
  14. javascript中数组总结
  15. NetBeans 代码折叠
  16. Python入门:数据结构的4种基本类型
  17. CPU核数和load average的关系
  18. php7配置多线程
  19. 运行msckf_vio
  20. Spark案例分析

热门文章

  1. activeX 开发
  2. Android手机测试-ddms&amp;monitor-抓crash,log
  3. 人脸检测及识别python实现系列(6)——终篇:从实时视频流识别出“我”
  4. 人脸检测及识别python实现系列(1)——配置、获取实时视频流
  5. JAVA学习笔记--组合与继承
  6. 第十一次作业 - Alpha 事后诸葛亮(团队)
  7. Alpha 冲刺6
  8. 移动平台的meta标签
  9. 第10章 vim程序编辑器
  10. C语言文法推导