• NOIP2007 字符串的展开


    题意简化

    给定一个字符串,求经过一堆乱七八糟的操作之后的新字符串
    详情请点此

    题解

    注意细节,暴力模拟
    它可能出现这样的情况!!! 9-a或-a
    好坑啊,刷提交数

    代码

    #include<bits/stdc++.h>
    using namespace std;
    #define re register
    #define ll long long
    #define get getchar()
    #define in inline
    int p1,p2,p3;
    char s[1000010];
    int main()
    {
        cin>>p1>>p2>>p3;
        scanf("%s",s+1);
        int n=strlen(s+1);
        for(re int i=1;i<=n;i++)
        {
            if(s[i]=='-'&&((s[i-1]<='9'&&s[i-1]>='0'&&s[i+1]<='9'&&s[i+1]>='0')||s[i-1]<='z'&&s[i+1]<='z'&&s[i-1]>='a'&&s[i+1]>='a'))//判断减号旁边的两个字符是否为同一类型
            {
                if(s[i-1]>=s[i+1])
                {
                    putchar('-');
                    continue;
                }//是否合法
                if(p3==2) //倒着输出
                {
                    for(re int j=s[i+1]-1;j>s[i-1];j--)
                    {
                        if(p1==3)
                        {
                            for(re int k=1;k<=p2;k++)putchar('*');
                            continue;
                        }
                        if(p1==1||(s[i-1]<='9'&&s[i-1]>='0'))
                            for(re int k=1;k<=p2;k++)putchar(char(j));
                        else
                            for(re int k=1;k<=p2;k++)putchar(char(j-('a'-'A')));
                    }
                }
                else //正着输出
                {
                    for(re int j=s[i-1]+1;j<s[i+1];j++)
                    {
                        if(p1==3)
                        {
                            for(re int k=1;k<=p2;k++)putchar('*');
                            continue;
                        }
                        if(p1==1||(s[i-1]<='9'&&s[i-1]>='0'))
                            for(re int k=1;k<=p2;k++) putchar(char(j));
                        else
                            for(re int k=1;k<=p2;k++)putchar(char(j-'a'+'A'));
                    }
                }
                continue;
            }
            putchar(s[i]);
        }
        return 0;
    }
    
    
    嗯,就这样了...
  • 相关阅读:
    反悔贪心 学习笔记
    「CF901C」Bipartite Segments 题解
    「HEOI2015」公约数数列 题解
    拓展欧拉定理
    莫比乌斯反演题目选做
    八月水题录
    chapt15、使用虚拟内存
    chapt16、线程堆栈
    chapt14、探索虚拟内存
    get files version by vbs
  • 原文地址:https://www.cnblogs.com/yzhx/p/10699866.html
Copyright © 2020-2023  润新知