zoukankan      html  css  js  c++  java
  • 天天快乐编程集训队2021暑假训练-0807-模拟题解

    本次训练不算太难,相对来说比较容易,大家可以尝试把它补完

    1.6964 最小的2个数

    本题共有两种解法,可以直接排序,这个做法是nlogn的,题目没有卡

    #include <bits/stdc++.h>
    using namespace std;
    struct T
    {
        int id, data;
    } a[100005];
    int cmp(T a, T b) { return a.data < b.data; }
    int main()
    {
        int n;
        cin >> n;
        for (int i = 0; i < n; i++)
        {
            cin >> a[i].data;
            a[i].id = i;
        }
        sort(a, a + n, cmp);
        cout << a[0].id << " " << a[1].id;
        return 0;
    }
    

    也可以直接O(n)求得,分别求下最小和次小用来更新即可

    #include <bits/stdc++.h>
    using namespace std;
    int a[100005];
    int main()
    {
        int n;
        cin>>n;
        for(int i=0;i<n;i++)cin>>a[i];
        //默认最小索引是-1
        int min1=-1,min2=-1;
        for(int i=0;i<n;i++)
        {
            //比最小还小
            if(min1==-1||a[i]<a[min1])
            {
                //次小更新为最小
                min2=min1;
                //最小更新为当前
                min1=i;
            }
            else if(min2==-1||a[i]<a[min2])
            {
                //更新次小
                min2=i;
            }
        }
        cout<<min1<<" "<<min2<<"
    ";
        return 0;
    }
    

    2.6744 条形码

    按题目条件模拟即可。

    #include <bits/stdc++.h>
    using namespace std;
    
    int main()
    {
        string s;
        cin>>s;
        int sum1=0;
        //步骤a
        //下标从0开始,倒数第一位即长度-1,序号2即长度-2
        for(int i=13-2;i>=0;i-=2)
        {
            sum1+=s[i]-'0';
        }
        //步骤b,*3
        sum1*=3;
        //步骤c
        for(int i=13-3;i>=0;i-=2)
        {
            sum1+=s[i]-'0';
        }
        //步骤d和e
        int ans=(sum1+9)/10*10-sum1;
        //进行校验
        if(ans==s[12]-'0')
        {
            cout<<"OK";
        }
        else
        {
            cout<<"Error";
        }
        return 0;
    }
    

    3.5125 序列猜猜猜

    这个题有歧义,get到出题人意思的话一遍就过,如果得不到正确的题意估计要迷茫很久。
    我们可以统计猜对的的以及全部出现的,全部出现的-猜对的就是B了

    #include <bits/stdc++.h>
    using namespace std;
    
    int main()
    {
        int c = 1;
        int n;
        while (cin>>n, n)
        {
            printf("Case %d:
    ", c++);
            char a[10000], b[10000];
            cin>>a;
            while (cin>>b,b[0]!='0')
            {
                int A = 0, B = 0;
                //统计A,即位置相同的
                for (int i = 0; i < n; i++)
                {
                    if (a[i] == b[i])
                        A++;
                }
                //依次统计字符的出现次数,取小
                for (int i = '1'; i <= 'z'; i++)
                {
                    int an = 0, bn = 0;
                    //枚举序列的每个字符
                    for (int j = 0; j < n; j++)
                    {
                        if (a[j] == i)
                            an++;
                        if (b[j] == i)
                            bn++;
                    }
                    //取小
                    B += min(an,bn);
                }
                printf("    (%d,%d)
    ", A, B - A);
            }
        }
        return 0;
    }
    

    4.6741 动动有奖

    3个规则分别考虑,可以列出以下流程
    ①输入总天数n
    ②表示天数的变量i初始化为1
    ③若i≤n,则转④,否则转⑦。
    ④输入第i天的数据(包括第i天走路步数X;,是否成功领取第i天“奖金”的标
    记F;)
    ⑤根据当前输入的数据Ⅹ,F,统计该天领取的奖金并累加到总奖金 total中。
    ⑥表示天数的变量i增加1,然后转③。
    ⑦输出变量 total的值。

    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
        int n;
        cin>>n;
        double tot=0;
        int c=0;
        for(int i=0,x,f;i<n;i++)
        {
            cin>>x>>f;
            if(f==1)
            {
                c=c+1;
            }
            else
            {
                c=0;
                continue;
            }
            double t=0;
            if(x>=1000)
            {
                t=0.3+((x-1000)/2000)*0.1;
                if(t>3)t=3;
            }
            if(c>=4)
            {
                tot=tot+2*t;
            }
            else
            {
                tot=tot+t;
            }
        }
        printf("%.1f",tot);
        return 0;
    }
    

    5.4799 作业调度方案

    这个题和C一样也是语文难题,需要读懂然后模拟他的意思,稍有理解错误就GG了

    6.1360 奇数阶魔方(II)

    找规律之后进行模拟

    大佬您太强了,还请多多指教哎
  • 相关阅读:
    洛谷P1443 马的遍历
    洛谷P1014 Cantor表
    《显示器件应用分析精粹:从芯片架构到驱动程序设计》已全面上市,活动赠书已经发放!
    透彻详尽的液晶显示屏CCFL背光源驱动逆变电源中的镇流电容设计
    《显示器件应用分析精粹:从芯片架构到驱动程序设计》正在印刷中,很快就要上市了
    透彻详细电荷泵升压电路的工作原理分析(配Multisim仿真验证)
    [GLSL]着色器周记03
    [GLSL]着色器周记02——火焰特效
    [GLSL]着色器周记01——真实光照
    毕业这五年【中】
  • 原文地址:https://www.cnblogs.com/BobHuang/p/15111132.html
Copyright © 2011-2022 走看看