#150. 魔法书密码
#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. 魔法书密码相关推荐
- 整合Struts2、Spring、Hibernate构建J2EE应用
[论文摘要] J2EE即是以Java 2平台为基础的体系结构,又是一组旨在简化企业解决方案的开发.部署.运行.维护等相关复杂问题的技术规范与指南.Struts2.Spring.Hibernate是当今 ...
- Burpsuite 使用教程
目录 一.简介 二.Kali 下的基本配置及使用 1. 启动 burpsuite 2.点击 Next,进入下一个页面,点击 Start Burp 启动. 三.基本功能配置及使用 3.1. Burpsu ...
- JSD-2204-续Docker命令-布隆过滤器的测试-秒杀业务完善-ELK-配置中心-Day18
1.续 Docker命令 1.1ps命令 docker ps 可以查看当前docker中运行的所有容器的状态 ps命令中常见的选项如下: -a:显示所有容器,如果不加只显示正在启动运行的容器,停止的不 ...
- 什么是zkSNARKs:谜一般的“月亮数学”加密,Part-1
随着以太坊进入"大都会(Metropolis)"阶段,全方位的升级使得隐私得到更好的保障,当然这也让以太坊更加复杂抽象.其中一项升级,引入了"Zero-Knowledge ...
- 基于asp.net网上论坛BBS毕业设计
获取项目源文件,联系Q:1415736481,可指导毕设,课设 摘要 随着Internet技术的飞速发展,论坛已经成为当今网络上不可或缺的一种交流方式之一.教育论坛通常如同一些教学类的博客.或者是教学 ...
- JSP基础实验(期末复习)
实验1 jsp开发环境搭建 一.搭建JSP开发环境 JSP开发环境是用来开发.测试和运行JSP程序的地方.在此以JDK_1.7.0_75.apache-tomcat-8.0.52.EelipseLun ...
- 比特大陆算法移植过程(详细)
一.模型转换环境安装搭建: 1.按照指导书安装环境 (1)先安装docker(网上搜教程): (2)按照指导说明书安装比特大陆的docker: wget -c https://sophon-file. ...
- 霍尼韦尔门禁说明书_霍尼韦尔中文说明书.doc
霍尼韦尔中文说明书 霍尼韦尔honeywell VISTA120中文说明书(上)1.产品以及系统的技术指标以及功能 VISTA-120可以划分为8个子系统,最多支持128个由有线.总线或无线设备组成的 ...
- 人工智能算法能“偷听”,拿什么拴住这头“灰犀牛”
人工智能算法是否可以"偷听"你的信息?对于这样的疑问,许多人恐怕还半信半疑,难以给出确定答案.但剑桥大学的一项最新研究却表明:这是很有可能的. "偷听"的原理是 ...
最新文章
- webkit qt版快速编译 支持wml版本
- 使用 Flex 布局与其他普通布局的简单对比
- 利用getLayoutParams()方法和setLayoutParams()方法
- 全排列(含递归和非递归的解法)
- 分离图片中的隐藏文件方法总结
- 怎么取消苹果手机自动续费_手机 App 自动续费套路多?我们要如何取消?
- linux怎么切换不同版本的r,在linux中用同一个版本的R 同时安装 Seurat2 和 Seurat3
- 最全的正则表达式大全
- 小米电视4A核心技术之语音识别浅析
- spark报错:invalid token
- 《Java就业培训教程》_张孝祥_书内源码_08
- fx3g485通讯模块_三菱FX3G型PLC采用RS485变频器作半双工
- npm安装工具时候报错code EINTEGRITY
- 呼叫中心系统和外呼机器人的高效组合
- CentOS 6.5安装Nvidia显卡驱动
- 哈尔滨工业大学 计算机系教授,哈尔滨工业大学计算机科学与技术学院导师简介:张田文...
- Python教程一:Python环境安装(Anaconda3版本)
- java动漫网站开题报告_动漫影响及其研究开题报告
- 8.17vue项目搜素框的实现
- 【Nginx 源码学习】内存池 及 优秀案例赏析:Nginx内存池设计