zoukankan      html  css  js  c++  java
  • 牛客练习赛10

    A旅游观光
    时间限制:C/C++ 1秒,其他语言2秒
    空间限制:C/C++ 131072K,其他语言262144K
    64bit IO Format: %lld

    题目描述 

    有n个地方,编号为1->n,任意两个地方有公交车,从i到j的票价为(i+j)mod(n+1),而且这个票可以用无限次,你要把这些地方全部走一遍,问最小花费为多少。可以在任意地方开始和结束。

    输入描述:

    第一行一个数n

    输出描述:

    输出一行一个数表示答案
    示例1

    输入

    10

    输出

    4

    说明

    1 -> 10 -> 2 -> 9 -> 3 -> 8 -> 4 -> 7 -> 5 -> 6,代价是4

    备注:

    对于100%的数据,有1 <= n <= 100000

    找规律即可

    #include<stdio.h>
    int main()
    {
        int n;
        scanf("%d",&n);
        printf("%d
    ",(n+1)/2-1);
        return 0;
    }

    B

    栈和排序
    时间限制:C/C++ 1秒,其他语言2秒
    空间限制:C/C++ 131072K,其他语言262144K
    64bit IO Format: %lld

    题目描述 

    给你一个1->n的排列和一个栈,入栈顺序给定
    你要在不打乱入栈顺序的情况下,对数组进行从大到小排序
    当无法完全排序时,请输出字典序最大的出栈序列

    输入描述:

    第一行一个数n
    第二行n个数,表示入栈的顺序,用空格隔开,结尾无空格

    输出描述:

    输出一行n个数表示答案,用空格隔开,结尾无空格
    示例1

    输入

    5
    2 1 5 3 4

    输出

    5 4 3 1 2

    说明

    2入栈;1入栈;5入栈;5出栈;3入栈;4入栈;4出栈;3出栈;1出栈;2出栈

    备注:

    对于100%的数据,有1<=n<=1000000,保证给的是一个排列

    直接用栈的思想就好了

    #include<stdio.h>
    const int N=1e6+5;
    int a[N],b[N];
    int main()
    {
        int n,tot=0;
        scanf("%d",&n);
        int t=n;
        for(int i=1; i<=n; i++)
        {
            scanf("%d",&a[i]);
            if(a[i]==t)b[++tot]=t--;
        }
        for(int i=n; i; i--)
            if(a[i]<=t)b[++tot]=a[i];
        printf("%d",b[1]);
        for(int i=2; i<=n; i++)printf(" %d",b[i]);
        return 0;
    }
    字符串操作
    时间限制:C/C++ 1秒,其他语言2秒
    空间限制:C/C++ 131072K,其他语言262144K
    64bit IO Format: %lld

    题目描述 

    给定长度为n的只有小写字母的字符串s,进行m次操作,每次将[l,r]范围内所有c1字符改成c2,输出操作完的字符串

    输入描述:

    第一行两个数n,m
    第二行一个字符串s
    之后m行,每行两个数l r两个字符c1 c2

    输出描述:

    输出一行一个字符串
    示例1

    输入

    5 3
    wxhak
    3 3 h x
    1 5 x a
    1 3 w g

    输出

    gaaak

    说明

    第一次修改后为wxxak
    第二次修改后为waaak
    第三次修改后为gaaak

    备注:

    对于100%的数据,有1<=n , m<=100

    做过类似的,直接操作一波

    #include<stdio.h>
    char s[105],c1,c2;
    int main()
    {
        int l,r,n,m;
        scanf("%d %d",&n,&m);
        scanf("%s",s);
        for(int i=0; i<m; i++)
        {
            scanf("%d %d %c %c",&l,&r,&c1,&c2);
            for(int j=l; j<=r; j++)
                if(s[j-1]==c1)s[j-1]=c2;
        }
        printf("%s
    ", s);
        return 0;
    }
  • 相关阅读:
    记录C#开发遇到的问题和应用经验
    HttpApplication,HttpModule,HttpContext及Asp.Net页生命周期
    itextsharp.dll(4.0.8.0)完整示例PDF
    步步为营 .NET 设计模式学习笔记 二十三、Interpreter(解释器模式)
    .net简谈分层架构思想
    FusionCharts Free
    表解锁的方法
    步步为营 .NET 设计模式学习笔记 二十一、Visitor(访问者模式)
    步步为营 .NET 设计模式学习笔记 二十二、Memento(备望录模式)
    再论抽象
  • 原文地址:https://www.cnblogs.com/BobHuang/p/8284839.html
Copyright © 2011-2022 走看看