题目链接

Problem - C - Codeforces

题目

Example
input
3
2 4 3
a*
4 1 3
a**a
6 3 20
**a***
output
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硬着头皮做, 能做出来的的更多相关文章

  1. Educational Codeforces Round 84 (Div. 2)

    Educational Codeforces Round 84 (Div. 2) 读题读题读题+脑筋急转弯 = =. A. Sum of Odd Integers 奇奇为奇,奇偶为偶,所以n,k奇偶性 ...

  2. 贪心 Codeforces Round #303 (Div. 2) B. Equidistant String

    题目传送门 /* 题意:找到一个字符串p,使得它和s,t的不同的总个数相同 贪心:假设p与s相同,奇偶变换赋值,当是偶数,则有答案 */ #include <cstdio> #includ ...

  3. Educational Codeforces Round 58 Div. 2 自闭记

    明明多个几秒就能场上AK了.自闭. A:签到. #include<iostream> #include<cstdio> #include<cmath> #inclu ...

  4. Educational Codeforces Round 47 (Div 2) (A~G)

    目录 Codeforces 1009 A.Game Shopping B.Minimum Ternary String C.Annoying Present D.Relatively Prime Gr ...

  5. 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 ...

  6. Educational Codeforces Round 45 (Div 2) (A~G)

    目录 Codeforces 990 A.Commentary Boxes B.Micro-World C.Bracket Sequences Concatenation Problem D.Graph ...

  7. Educational Codeforces Round 85 (Div. 2)

    题目链接:https://codeforces.com/contest/1334 A. Level Statistics 题意 一个关卡有玩家的尝试次数和通关次数,按时间顺序给出一个玩家 $n$ 个时 ...

  8. Educational Codeforces Round 86 (Div. 2)

    比赛链接:https://codeforces.com/contest/1342 A - Road To Zero 题意 有两个非负整数 x, y 以及两种操作: 支付 a 点代价使其中一个数加一或减 ...

  9. Educational Codeforces Round 108 (Div. 2), C map套vector存储

    地址  Problem - C - Codeforces 题目 题意 一个学校有n个人参加比赛,他们分别属于ui队,每个人的能力值为si 当每个队需要1~n个人的时候,这个学校能参加的人的能力值和最大 ...

随机推荐

  1. Oracle 11g中查询CPU占有率高的SQL

    oracle版本:oracle11g 背景:今天在Linux中的oracle服务上,运用top命令发现许多进程的CPU占有率是100%. 操作步骤: 以进程PID:7851为例 执行以下语句: 方法一 ...

  2. 内网穿透工具--NPS

    一.简介 NPS是一款轻量级,高性能,强大功能的内网穿透代理服务器.目前支持TCP,UDP流量转发,可支持任何TCP,UDP上层协议(访问内网网站,本地支付接口调试,SSH访问,远程桌面,内网dns解 ...

  3. tomcat启动 ssm项目出现乱码的解决

    0.乱码产生原因:编码和解码的方式是不同 1.出现乱码的解决方式[推荐]: 在tomcat 的配置文件web.xml 中添加上请求编码过滤器: <!-- 请求编码过滤器 --> <f ...

  4. 重写(Override)与重载(Overload)的区别(面试题)

    概念:重写(Override):是存在子父之间的关系,子类里定义的方法与父类里定义的方法具有相同的方法名以及相同的返回值和参数类型 重写规则: 1.方法名形参列表相同: 2.访问权限,子类大于等于父类 ...

  5. 有标号DAG计数(生成函数)

    有标号DAG计数(生成函数) luogu 题解时间 首先考虑暴力,很容易得出 $ f[ i ] = \sum\limits_{ j = 1 }^{ i } ( -1 )^{ j - 1 } \bino ...

  6. B+树叶子节点数据如何存储,以及如何查找某一条数据

    MySQL索引背后的数据结构及算法原理 https://www.kancloud.cn/kancloud/theory-of-mysql-index  非常好 根据一条sql  如何查看索引结构等信息 ...

  7. 什么是Spring beans?

    Spring beans 是那些形成Spring应用的主干的java对象.它们被Spring IOC容器初始化,装配,和管理.这些beans通过容器中配置的元数据创建.比如,以XML文件中 的形式定义 ...

  8. probably another instance of uWSGI is running on the same address (127.0.0.1:9090). bind(): Address ...

    probably another instance of uWSGI is running on the same address (127.0.0.1:9090). bind(): Address ...

  9. 静态嵌套类(Static Nested Class)和内部类(Inner Class) 的不同?

    Static Nested Class 是被声明为静态(static)的内部类,它可以不依赖于外部类 实例被实例化.而通常的内部类需要在外部类实例化后才能实例化,其语法看起 来挺诡异的,如下所示. / ...

  10. spring-boot-learning-配置文件相关

      Spring-boot的配置文件   springboot通过那个下面的依赖去读取配置文件的上下文: <!-- https://mvnrepository.com/artifact/org. ...