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

    A旅游观光

    题目描述

    有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

    (1+n)%(n+1) 、(2+(n-1))%(n+1)......都是0,不然看出规律就时(n+1)/2-1
    1 #include <bits/stdc++.h>
    2 using namespace std;
    3 int main() {
    4     int n;
    5     cin >> n;
    6     cout << (n+1) / 2 - 1 << endl;
    7     return 0;
    8 }

    B栈和排序

    题目描述

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

    输入描述:

    第一行一个数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,保证给的是一个排列

    每次入站前查找下后面的有没有比它更大的,有点的话就入栈,没有就话就不要入栈了,这样字典序才时最大的。
     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 const int N = 1e6+10;
     4 int a[N],cnt[N], b[N];
     5 stack<int> st;
     6 int main() {
     7     int n;
     8     cin >> n;
     9     for(int i = 1; i <= n; i ++) cin >> a[i];
    10     cnt[n] = a[n];
    11     for(int i = n-1; i > 0; i --) {
    12         cnt[i] = max(a[i], cnt[i+1]);
    13     }
    14     int ans = 1;
    15     for(int i = 1; i <= n; i ++) {
    16         if(a[i] == cnt[i]) {
    17             b[ans++] = a[i];
    18         } else {
    19             st.push(a[i]);
    20         }
    21     }
    22     while(!st.empty()) {
    23         b[ans++] = st.top();
    24         st.pop();
    25     }
    26     for(int i = 1; i <= n; i ++) {
    27         printf("%d%c",b[i],i==n?'
    ':' ');
    28     }
    29     return 0;
    30 }

    D字符串操作

    题目描述

    给定长度为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

    水题
     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 const int N = 110;
     4 char str[N];
     5 int main() {
     6     int n, m, l, r;
     7     char ch1, ch2;
     8     cin >> n >> m;
     9     cin >> str+1;
    10     for(int i = 1; i <= m; i ++) {
    11         cin >> l >> r >> ch1 >> ch2;
    12         for(int j = l; j <= r; j ++) {
    13             if(str[j] == ch1) str[j] = ch2;
    14         }
    15     }
    16     cout << str+1 << endl;
    17     return 0;
    18 }
  • 相关阅读:
    前端学习
    python 镜像
    os模块常用操作
    pandas 缺失值与空值处理
    pandas 根据列的值选取所有行
    pandas模块
    编码与解码
    正则表达式
    pthon之字典的遍历
    python作用域
  • 原文地址:https://www.cnblogs.com/xingkongyihao/p/8278012.html
Copyright © 2011-2022 走看看