CF1328B K-th Beautiful String,然而CF今天却上不去了,这是洛谷的链接

题意

一个长度为\(n\)的字符串,有2个\(\texttt{b}\)和\(n-2\)个\(\texttt{a}\)

按字典序排序后,问你第\(k\)个是啥

\(n\leq 10^5\)


由于我们相信CF从来不卡常,所以这实际是个\(O(n)\)找规律

看题目里的例子:

aaabb
aabab
aabba
abaab
ababa
abbaa
baaab
baaba
babaa
bbaaa

可以发现,如果只看前面一个\(\texttt{b}\)的运动轨迹,是从后向前以为一位移动的

而对于靠后的一个\(\texttt{b}\),当前面那个\(\texttt{b}\)确定后,它也是从最后一位向前移动,直到移动到前面那个\(\texttt{b}\)的后一位

然后,它又回到最后,前面那个\(\texttt{b}\)再往前走一位

所以我们可以从后到前枚举第一个\(\texttt{b}\)的位置,假设当前位置是\(i\),那么这一种情况就有\(n-i\)个字符串

讨论如下:

  • \(k>n-i\),那么,\(k\rightarrow k-(n-i)\),就是说这\(n-i\)个字符串里面没有要找的,再向前考虑
  • 其余情况,也就是我们要找的第\(k\)个字符串就在这\(n-i\)个,那么第二个\(\texttt{b}\)就是在第\(n-k+1\)为,输出就行

可以结合上面的例子理解

放上代码

#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cmath>
#include<iomanip>
#include<cstring>
#define reg register
#define EN std::puts("")
#define LL long long
inline LL read(){
LL x=0,y=1;
char c=std::getchar();
while(c<'0'||c>'9'){if(c=='-') y=0;c=std::getchar();}
while(c>='0'&&c<='9'){x=x*10+(c^48);c=std::getchar();}
return y?x:-x;
}
LL n,k;
int main(){int T=read();while(T--){
n=read();k=read();
for(reg int i=n-1;i;i--){
if(k>n-i) k-=n-i;
else{
for(reg int j=1;j<i;j++) std::putchar('a');
std::putchar('b');
for(reg int j=i+1;j<n-k+1;j++) std::putchar('a');
std::putchar('b');
for(reg int j=n-k+2;j<=n;j++) std::putchar('a');
break;
}
}
EN;
}
return 0;
}

最新文章

  1. Maven实战系列文章
  2. TextView跑马灯效果
  3. Linux:-杀进程的技巧
  4. Javascript中数组与字典(即map)的使用
  5. javascript思维导图
  6. Sqlserver 存储过程中结合事务的代码
  7. [linux] linux 破解版confluence安装
  8. [java] JNLP文件安装
  9. Oracle数据库之数据类型
  10. perl5 第二章 简单变量
  11. 「数据结构」:模拟指针(simulated pointer)
  12. 表单验证的3个函数ISSET()、empty()、is_numeric()的使用方法
  13. java复习(1)---java与C++区别
  14. JAVA环境变量关于
  15. 20190328-CSS样式一:字体样式font-、文本样式text-、背景图样式background-
  16. EF Core 相关的千倍性能之差: AutoMapper ProjectTo VS Mapster ProjectToType
  17. boost中bind的使用
  18. IHttpHandler处理请求api
  19. 下载并配置jdk
  20. 前端解读面向切面编程(AOP)

热门文章

  1. Linux 系统篇(一)
  2. Array(数组)对象--&gt;splice() 方法
  3. 使用基于vuecli创建的目录推送到指定远程分支
  4. 解决idea导入maven项目缺少jar包的问题
  5. stand up meeting 11/30/2015
  6. J - The sum problem
  7. 基于thinkphp3.2.3开发的CMS内容管理系统 - ThinkPHP框架
  8. 【高频 Redis 面试题】Redis 事务是否具备原子性?
  9. 用python把技术文档中,每个模块系列截图生成一个动态GIF
  10. 转:handler.post 为什么要将thread对象post到handler中执行呢?