Educational Codeforces Round 119 (Div. 2), (C) BA-String硬着头皮做, 能做出来的
题目链接
题目
3
2 4 3
a*
4 1 3
a**a
6 3 20
**a***
abb
abba
babbbbbbbbb
题意
n--字符串长度, k--每个星号最多代表k个b , x--第x小的字符串s的子串(可以是不连续子串)
每一个星号可以换成0~k个b, 需要求出第x小的字符串s的子串.
题解
a****a***a**(连续的星号指两个a或者边缘之间夹的星号, 可以为1)
从后面往前看(两个星号), 对于相邻的cnt个星号, 它们可以有cnt*k+1(下方以res代替)种出现方式, 即0~cnt*k个b。
再往前看(三个星号), 前面每多一种情况, 整体就多上面的res个, 也就是(cnt*k+1) * res。
但是, 每段连续的星号要放多少个b呢?
还是从后往前看, 每次遇到连续的星号, x/(cnt*k+1), 连续的星号的情况个数为x%(cnt*k+1)。
值得注意的是, 在一切的开始之时x--了!!! ----------> 因为排名是从1开始的, 不是0, 所以-1。
AC代码
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
int main()
{
int t;
cin >> t;
while(t --)
{
LL h[2010]={0};
int n, k;
LL x;
string s;
cin >> n >> k >> x>> s;
x --;//排名是从1开始的, 不是0, 所以-1.
LL now=1;
int cnt = 0;
for(int i = n-1; i >= 0 && x != 0; i --)
{
if(s[i]=='*')cnt ++;
else if(cnt>0)
{
h[i] = x % ((LL)cnt*k+1);
x /= ((LL)cnt * k +1);
cnt = 0;
}
}
for(int i=0;i<x;i++)cout << "b";//最前面没有a,不能赋值给h[i]
for(int i =0; i < n; i ++)
{
if(s[i] == 'a')
{
cout << 'a';
for(int j = 0; j < h[i] ; j ++)cout << 'b';
}
}
cout << endl;
} return 0;
}
Educational Codeforces Round 119 (Div. 2), (C) BA-String硬着头皮做, 能做出来的的更多相关文章
- Educational Codeforces Round 84 (Div. 2)
Educational Codeforces Round 84 (Div. 2) 读题读题读题+脑筋急转弯 = =. A. Sum of Odd Integers 奇奇为奇,奇偶为偶,所以n,k奇偶性 ...
- 贪心 Codeforces Round #303 (Div. 2) B. Equidistant String
题目传送门 /* 题意:找到一个字符串p,使得它和s,t的不同的总个数相同 贪心:假设p与s相同,奇偶变换赋值,当是偶数,则有答案 */ #include <cstdio> #includ ...
- Educational Codeforces Round 58 Div. 2 自闭记
明明多个几秒就能场上AK了.自闭. A:签到. #include<iostream> #include<cstdio> #include<cmath> #inclu ...
- Educational Codeforces Round 47 (Div 2) (A~G)
目录 Codeforces 1009 A.Game Shopping B.Minimum Ternary String C.Annoying Present D.Relatively Prime Gr ...
- Educational Codeforces Round 46 (Div 2) (A~G)
目录 Codeforces 1000 A.Codehorses T-shirts B.Light It Up C.Covered Points Count(差分) D.Yet Another Prob ...
- Educational Codeforces Round 45 (Div 2) (A~G)
目录 Codeforces 990 A.Commentary Boxes B.Micro-World C.Bracket Sequences Concatenation Problem D.Graph ...
- Educational Codeforces Round 85 (Div. 2)
题目链接:https://codeforces.com/contest/1334 A. Level Statistics 题意 一个关卡有玩家的尝试次数和通关次数,按时间顺序给出一个玩家 $n$ 个时 ...
- Educational Codeforces Round 86 (Div. 2)
比赛链接:https://codeforces.com/contest/1342 A - Road To Zero 题意 有两个非负整数 x, y 以及两种操作: 支付 a 点代价使其中一个数加一或减 ...
- Educational Codeforces Round 108 (Div. 2), C map套vector存储
地址 Problem - C - Codeforces 题目 题意 一个学校有n个人参加比赛,他们分别属于ui队,每个人的能力值为si 当每个队需要1~n个人的时候,这个学校能参加的人的能力值和最大 ...
随机推荐
- [转载]SQL注入绕过WAF的方法总结
基本/简单绕过方法: 1.注释符 http://www.0dayhack.com/index.php?page_id=-15 /*!UNION*/ /*!SELECT*/ 1,2,3,4-. 2.使用 ...
- 关于IIS应用程序池的默认参数设置解决
关于IIS应用程序池的默认参数设置,一般如下设置以满足IIS站点的需要. 1.关于IIS站点的启动模式,以及处理请求的管道模式设置. 2.回收机制设置, A)若IIS站点程序中存在单例模式访问DB数据 ...
- 一条SQL语句执行得很慢的原因有哪些
说实话,这个问题可以涉及到 MySQL 的很多核心知识,可以扯出一大堆,就像要考你计算机网络的知识时,问你"输入URL回车之后,究竟发生了什么"一样,看看你能说出多少了. 之前腾讯 ...
- 什么是BASH?
BASH是Bourne Again SHell的缩写.它由Steve Bourne编写,作为原始Bourne Shell(由/ bin / sh表示)的替代品.它结合了原始版本的Bourne Shel ...
- Jenkins+Docker+Git 自动化部署
Jenkins+Docker+Git 自动化部署图文教程 https://blog.csdn.net/qq_38252039/article/details/89791247 前言: 通过几天的学习和 ...
- Aspect 切面?
AOP核心就是切面,它将多个类的通用行为封装成可重用的模块,该模块含有一组API提供横切功能.比如,一个日志模块可以被称作日志的AOP切面.根据需求的不同,一个应用程序可以有若干切面.在Spring ...
- 什么是 Spring Batch?
Spring Boot Batch 提供可重用的函数,这些函数在处理大量记录时非常重要,包括日志/跟踪,事务管理,作业处理统计信息,作业重新启动,跳过和资源管理.它还提供了更先进的技术服务和功能,通过 ...
- 我们如何监视所有 Spring Boot 微服务?
Spring Boot 提供监视器端点以监控各个微服务的度量.这些端点对于获取有关应用程序的信息(如它们是否已启动)以及它们的组件(如数据库等)是否正常运行很有帮助.但是,使用监视器的一个主要缺点或困 ...
- Maria DB数据库基础知识
Maria DB连接 与MariaDB建立连接的一种方法是在命令提示符下使用mysql二进制文件. Maria DB命令行登录数据库服务: mysql -u root -p -- 换行输入密码 上面给 ...
- 使用 MyBatis 的 mapper 接口调用时有哪些要求?
1.Mapper 接口方法名和 mapper.xml 中定义的每个 sql 的 id 相同: 2.Mapper 接口方法的输入参数类型和 mapper.xml 中定义的每个 sql 的 paramet ...