zoukankan      html  css  js  c++  java
  • Educational Codeforces Round 47 (Rated for Div. 2)

    A. Game Shopping

    题意:给定两个长度不同的数组,第一个数组里面的元素代表商品ai的价值,第二个数组里的元素代表钞票ci的价值。将从第一个商品往后买东西,如果钞票的金额大于商品的价值,则可以买,并且本张钞票花出无找零。问最多能买几个东西。很显然可以用双指针做。

    #include <iostream>
    using namespace std;
    const int     N=1010;
    int a[N],q[N];
    int n,m;
    int main()
    {
        int sum=0;
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;i++)
        scanf("%d",&a[i]);
        for(int i=1;i<=m;i++)
        scanf("%d",&q[i]);
        for(int i=1,j=1;i<=n;i++)
        {
            if(a[i]<=q[j])
            {
                sum++;
                j++;
            }
        }
        printf("%d
    ",sum);
     } 
    View Code

    B. Minimum Ternary String

    题意:给定一个仅由 0,1,2三种字符组成的字符串,2和0不能互换位置,其余字符之间可以任意交换。要求输出经过交换后的最小字典序的字符串,

    分析:首先,由于要最小字典序的字符串,应该尽量按照0,1,2的顺序排列。1没有任何限制,所以我们先遍历数组统计1和0在字符串中出现的个数,当第一个2出现时代表2以后的0无法和2交换换到前面来,所以停止统计0的个数。

    最后我们 先输出统计的0和1最后在第一个出现2位置的字符串开始向后遍历如果不是1就输出。

    #include <iostream>
    #include <cstring>
    using namespace std;
    string s,ans1,ans2;
    bool flag=true;
    int k;
    int main()
    {
        cin>>s;
        for(int i=0;i<s.length();i++)
        {
            if(flag)
            if(s[i]=='2')
            {
                flag=false;
                k=i;
            }
            if(s[i]=='1') ans1+='1';
            if(flag&&s[i]=='0') ans2+='0';
        }
        cout<<ans2+ans1;
        if(!flag)
        {
        for(int i=k;i<s.length();i++)
        {
            if(s[i]!='1')
            cout<<s[i];
        }
        }
        printf("
    ");
     } 
    View Code
  • 相关阅读:
    假期第九天
    假期第八天
    8.9周总结
    构建之法阅读笔记之三
    构建之法阅读笔记之二
    构建之法阅读笔记之一
    03人月神话阅读笔记之一
    手机输入法使用评价
    十天冲刺-第十天
    十天冲刺-第九天
  • 原文地址:https://www.cnblogs.com/daoyuan/p/12435127.html
Copyright © 2011-2022 走看看