#150. 魔法书密码

统计
描述
提交
自定义测试
【题目描述】:
哪里有压迫,哪里就有反抗。

moreD的宠物在法庭的帮助下终于反抗了。作为一只聪明的宠物,他打算把魔法师moreD的魔法书盗去,夺取moreD的魔法能力。但moreD怎么会让自己的魔法书轻易地被盗取?moreD在魔法书上设置了一个密码锁,密码锁上有一个问题。

施以《斯卧铺》魔法吧,你有M次机会,如此将得完美密码。

然后是一串小写字母串。

moreD的宠物《斯卧铺》魔法就是施法时的字符串其中相邻两位交换。

而moreD对于完美密码的定义自然是最小字典序了。

请帮助moreD的宠物,想出密码吧。

【输入描述】:
第一行一个整数M,表示操作次数。

第二行一串小写字母组成的字符串S,如题目所示。

【输出描述】:
输出完美密码。

【样例输入】:
3
dcba
【样例输出】:
adcb
【样例说明】:
先对第3,4两位施法,字符串变成dcab,然后对第2,3两位施法,字符串变成dacb,最后对第1,2两位施法,字符串变成adcb。

【时间限制、数据范围及描述】:
时间:1s 空间:256M

对于30%的数据|S|<=10

对于60%的数据|S|<=3,000

对于100%的数据8<=|S|<=100,000 M<=(|S|-8)^2+2

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <string>
#include <cstring>
#include <cmath>
using namespace std;
typedef long long ll;
ll M;
int len;
int C[100005],next[100005],head[26];
char S[100005];
inline void add(int x,int pos) {next[pos]=head[x];head[x]=pos;
}
inline void update(int x,int v) {for(int i=x; i<=len; i+=i&-i) C[i]+=v;
}
inline int query(int x) {if(x==0) return 0;int res=0;for(int i=x; i>0; i-=i&-i) res+=C[i];return res;
}
int main() {scanf("%lld",&M);scanf("%s",&S);len=strlen(S);for(int i=len-1; i>=0; i--) add(S[i]-'a',i+1);for(int i=1; i<=len; i++) update(i,1);for(int i=0; i<len; i++) {int j;for(j=0; j<26; j++) {int tmp;if(head[j]!=0&& (tmp=query(head[j]-1))<=M) {M-=tmp;update(head[j],-1);head[j]=next[head[j]];break;}}printf("%c",j+'a');}return 0;
}

#150. 魔法书密码相关推荐

  1. 整合Struts2、Spring、Hibernate构建J2EE应用

    [论文摘要] J2EE即是以Java 2平台为基础的体系结构,又是一组旨在简化企业解决方案的开发.部署.运行.维护等相关复杂问题的技术规范与指南.Struts2.Spring.Hibernate是当今 ...

  2. Burpsuite 使用教程

    目录 一.简介 二.Kali 下的基本配置及使用 1. 启动 burpsuite 2.点击 Next,进入下一个页面,点击 Start Burp 启动. 三.基本功能配置及使用 3.1. Burpsu ...

  3. JSD-2204-续Docker命令-布隆过滤器的测试-秒杀业务完善-ELK-配置中心-Day18

    1.续 Docker命令 1.1ps命令 docker ps 可以查看当前docker中运行的所有容器的状态 ps命令中常见的选项如下: -a:显示所有容器,如果不加只显示正在启动运行的容器,停止的不 ...

  4. 什么是zkSNARKs:谜一般的“月亮数学”加密,Part-1

    随着以太坊进入"大都会(Metropolis)"阶段,全方位的升级使得隐私得到更好的保障,当然这也让以太坊更加复杂抽象.其中一项升级,引入了"Zero-Knowledge ...

  5. 基于asp.net网上论坛BBS毕业设计

    获取项目源文件,联系Q:1415736481,可指导毕设,课设 摘要 随着Internet技术的飞速发展,论坛已经成为当今网络上不可或缺的一种交流方式之一.教育论坛通常如同一些教学类的博客.或者是教学 ...

  6. JSP基础实验(期末复习)

    实验1 jsp开发环境搭建 一.搭建JSP开发环境 JSP开发环境是用来开发.测试和运行JSP程序的地方.在此以JDK_1.7.0_75.apache-tomcat-8.0.52.EelipseLun ...

  7. 比特大陆算法移植过程(详细)

    一.模型转换环境安装搭建: 1.按照指导书安装环境 (1)先安装docker(网上搜教程): (2)按照指导说明书安装比特大陆的docker: wget -c https://sophon-file. ...

  8. 霍尼韦尔门禁说明书_霍尼韦尔中文说明书.doc

    霍尼韦尔中文说明书 霍尼韦尔honeywell VISTA120中文说明书(上)1.产品以及系统的技术指标以及功能 VISTA-120可以划分为8个子系统,最多支持128个由有线.总线或无线设备组成的 ...

  9. 人工智能算法能“偷听”,拿什么拴住这头“灰犀牛”

    人工智能算法是否可以"偷听"你的信息?对于这样的疑问,许多人恐怕还半信半疑,难以给出确定答案.但剑桥大学的一项最新研究却表明:这是很有可能的. "偷听"的原理是 ...

最新文章

  1. webkit qt版快速编译 支持wml版本
  2. 使用 Flex 布局与其他普通布局的简单对比
  3. 利用getLayoutParams()方法和setLayoutParams()方法
  4. 全排列(含递归和非递归的解法)
  5. 分离图片中的隐藏文件方法总结
  6. 怎么取消苹果手机自动续费_手机 App 自动续费套路多?我们要如何取消?
  7. linux怎么切换不同版本的r,在linux中用同一个版本的R 同时安装 Seurat2 和 Seurat3
  8. 最全的正则表达式大全
  9. 小米电视4A核心技术之语音识别浅析
  10. spark报错:invalid token
  11. 《Java就业培训教程》_张孝祥_书内源码_08
  12. fx3g485通讯模块_三菱FX3G型PLC采用RS485变频器作半双工
  13. npm安装工具时候报错code EINTEGRITY
  14. 呼叫中心系统和外呼机器人的高效组合
  15. CentOS 6.5安装Nvidia显卡驱动
  16. 哈尔滨工业大学 计算机系教授,哈尔滨工业大学计算机科学与技术学院导师简介:张田文...
  17. Python教程一:Python环境安装(Anaconda3版本)
  18. java动漫网站开题报告_动漫影响及其研究开题报告
  19. 8.17vue项目搜素框的实现
  20. 【Nginx 源码学习】内存池 及 优秀案例赏析:Nginx内存池设计

热门文章

  1. i5 1245U怎么样 相当于什么水平
  2. 电脑回收站删除的文件怎么恢复?
  3. UML类关系图记不住?一篇搞定
  4. Downie 4 4.6.13 MAC上最好的一款视频下载工具
  5. 星域cdn概念股票_星域CDN获工信部牌照 CDN行业步入规范时代
  6. 手撸SSO单点登录(六)SSO单点退出原理
  7. ffmpeg实战教程(一)Mp4,mkv等格式解码为h264和yuv数据
  8. 你的电脑遇到问题,需要重新启动
  9. 安卓恶意软件检测论文内容整理
  10. 基于485总线的评分系统双机实验报告