CodeForces 518A - Chewbaсca and Number(思路)

题意:给你两个长度相同的字符串,输出一个长度与它俩相同,且字典序位于两者之间(不可与其中一者相同)的字符串,若不存在则输出“No such string”。(输入保证字典序第一个严格小于第二个,且长度相同)

水题,让最后一个加一个单位的字典序然后检查是否符合条件即可(注意为‘z‘的时候要进位,若长度超过则也不符合)

#include<cstdio>
#include<cstring>
#include<cctype>
#include<cstdlib>
#include<cmath>
#include<iostream>
#include<sstream>
#include<iterator>
#include<algorithm>
#include<string>
#include<vector>
#include<set>
#include<map>
#include<deque>
#include<queue>
#include<stack>
#include<list>
typedef long long ll;
typedef unsigned long long llu;
const int MAXN = 100 + 10;
const int MAXT = 10000 + 10;
const int INF = 0x7f7f7f7f;
const double pi = acos(-1.0);
const double EPS = 1e-6;
using namespace std;  

char s1[MAXT], s2[MAXT], s[MAXT];  

int main(){
    scanf("%s%s", s1, s2);
    int len = strlen(s1);
    int lur = len - 1;
    bool flag = true;
    if(s1[lur] == ‘z‘){
        while(lur >= 0 && s1[lur] == ‘z‘)  s1[lur] = ‘a‘, --lur;
        if(lur == -1)  flag = false;
        else  s1[lur] = s1[lur] + 1;
    }
    else  s1[lur] = s1[lur] + 1;
    if(strcmp(s1, s2) >= 0)  flag = false;
    if(!flag)  printf("No such string\n");
    else  printf("%s\n", s1);
    return 0;
}  
时间: 2024-10-16 07:40:14

CodeForces 518A - Chewbaсca and Number(思路)的相关文章

Codeforces 464C Substitutes in Number(高效+快速幂)

题目链接:Codeforces 464C Substitutes in Number 题目大意:给定一个字符串,以及n中变换操作,将一个数字变成一个字符串,可能为空串,然后最后将字符串当成一 个数,取模1e9+7. 解题思路:将操作倒过来处理,这样维护每个数来的val,len两个,val表示对应数值取模1e9+7,len表示对应有多少 位,再计算的过程中要使用. #include <cstdio> #include <cstring> #include <vector>

CodeForces 534C - Polycarpus&#39; Dice(思路)

题意:给定n (1 <= n <= 2*10^5) 个骰子,给定每个骰子最大可以掷出的最大数(最小数始终为1),给定所有骰子掷出的点数和A,求每个骰子不可能掷出的点数个数. 考虑最大和最小情况,作差即可(详情见代码注释) #include<cstdio> #include<cstring> #include<cctype> #include<cstdlib> #include<cmath> #include<iostream&g

Codeforces 724 G Xor-matic Number of the Graph 线性基+DFS

G. Xor-matic Number of the Graph http://codeforces.com/problemset/problem/724/G 题意:给你一张无向图.定义一个无序三元组(u,v,s)表示u到v的(不一定为简单路径)路径上xor值为s.求出这张无向图所有不重复三元组的s之和.1≤n≤10^5,1≤m≤2*10^5. 想法: 如果做过[Wc2011 xor]这道题目(题解),那么问题变得简单起来了. ①假设我们钦定一个(u,v),设任意一条u->v的路径xor值为X,

dp --- Codeforces 245H :Queries for Number of Palindromes

Queries for Number of Palindromes Problem's Link:   http://codeforces.com/problemset/problem/245/H Mean: 给你一个字符串,然后q个询问:从i到j这段字符串中存在多少个回文串. analyse: dp[i][j]表示i~j这段的回文串数. 首先判断i~j是否为回文,是则dp[i][j]=1,否则dp[i][j]=0; 那么dp[i][j]=dp[i][j]+dp[i][j-1]+dp[i+1[j

Codeforces 464C Substitutes in Number 同余定理+模拟

题目链接:点击打开链接 题意: 给定一串数字 下面有n个操作 每行格式形如 d->t d为一位数字,t为任意长度的数字. t的长度和不超过100000 问:最后的结果%1e9+7 思路: 首先我们可以得到一个结论: 同余定理使用后不能再修改数字. 那么为了让同余定理能够使用,我们倒序处理每个数字,这样就能保证能够使用同余定理. 记录每个数字实际代表的数字和实际对应的位数. 然后倒序处理上来即可. #include <stdio.h> #include <string.h> #

CodeForces 279D The Minimum Number of Variables 题解

题目大意: 有一组n个不相同的数字组成数串:a1,a2,a3-an. 1.一个数组b. 2.第一个操作我们将b0的值赋为a1.之后我们有n-1个操作,第k次操作我们将by=bi+bj(y,i,j可能相同). 3.每次操作结束后我们依次取出by.按顺序组成新串. 问操作结束后,我们获得的新串能否与a数串相同.如果可以输出数组b所需的最小长度.反之输出-1. 思路: 先介绍一个纯dfs的算法:每次依次枚举i,j,y,然而会T. 不过,可以发现,b中的数必定在a中出现过.因此,记忆化搜索,状态(s)中

codeforces 396A A. On Number of Decompositions into Multipliers(组合数学+数论)

题目链接: codeforces 396A 题目大意: 给出n个数的序列,求取和这个序列的积相同但是序列本身不同的个数. 题目分析: 组合数学的问题,对于每一个数我们可以将它分解质因数,然后统计整个序列的各个质因数的个数. 那么符合要求的序列一定用这些质因数(每个质因数的个数保持不变)组成的,所以我们可以利用组合数学中的插板法,对每个质因数进行划分,划分给n个数(存在一些数没有分到的情况),那么就是Cn?1质因数个数+n?1. 根据乘法原则,总的方案数就是每个质因数的划分数之积. AC代码: #

Codeforces 245H Queries for Number of Palindromes

题意:给你一个字符串,再给你一个q(询问个数1000000),问你这个区间内回文串的个数. 解题思路: 1)dp,先把 i 到j 是回文串的真值赋值给 dp[i][j] ,然后从后往前dp    dp[i][j] += dp[i+1][j] + dp[i][j-1]  -dp[i+1][j-1]; 解题代码: 1 // File Name: 245h.dp.cpp 2 // Author: darkdream 3 // Created Time: 2015年03月30日 星期一 15时27分10

[矩阵快速幂] CodeForces 392C Yet Another Number Sequence

题意: 题目意思很明朗~ 思路: A(n+1)=F(n+1)*(n+1)^k A(n)=F(n)*(n)^k A(n-1)=F(n-1)*(n-1)^k 这里拿k=2来举例 A(n+1)=F(n)*(n+1)^2+F(n-1)*(n+1)^2 对于A(n+1)发现可以由A(n)和A(n-1)得到 实际上就是多了 2*n+1个F(n) 和4*n个F(n-1) 其实就是n^k -> (n+1)^k  以及 (n-1)^k ->(n+1)^k 大家算一算就发现是和杨辉三角有关的,就是系数 这样我们就