• 寒假Day53:Codeforces519B水题


    题目链接:http://codeforces.com/problemset/problem/519/B

    题意:

    给出n,再给出三行,分别是n、n-1、n-2个数,输出每一行比上一行缺失的数字。

    总感觉自己的脑回路永远想不到最简单的办法

    然后就是,水题也可以学到东西,况且这是我觉得水但是我没AC的题

    法一:

    思路:下一行少的数字一定是上一行的和与下一行的和之间的差值,没想到。

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll ;
    const int N=1e5+20;
    
    int main()
    {
        int n,x;
        while(cin>>n)
        {
            ll sum1=0,sum2=0;
            for(int i=0;i<n;i++)
            {
                cin>>x;
                sum1+=x;
            }
            for(int i=0;i<n-1;i++)
            {
                cin>>x;
                sum1-=x;
                sum2+=x;
            }
            for(int i=0;i<n-2;i++)
            {
                cin>>x;
                sum2-=x;
            }
            cout<<sum1<<endl;
            cout<<sum2<<endl;
        }
        return 0;
    }
    View Code

    法二:

    思路:排序后,对每一项进行比较,第一个不在原来位置的就是答案啊

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll ;
    const int N=1e5+20;
    
    int a[N],b[N],c[N];
    
    int main()
    {
        int n;
        while(cin>>n)
        {
            for(int i=0; i<n; i++)
                cin>>a[i];
            for(int i=0; i<n-1; i++)
                cin>>b[i];
            for(int i=0; i<n-2; i++)
                cin>>c[i];
            sort(a,a+n);
            sort(b,b+n-1);
            sort(c,c+n-2);
            for(int i=0;i<n;i++)
            {
                if(a[i]!=b[i])
                {
                    cout<<a[i]<<endl;
                    break;
                }
            }
            for(int i=0;i<n-1;i++)
            {
                if(b[i]!=c[i])
                {
                    cout<<b[i]<<endl;
                    break;
                }
            }
        }
        return 0;
    }
    View Code

    这个代码一直RT,但是我不知道错在哪了

    思路:直接标记,存在的话++;

    错误代码:

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll ;
    const int N=1e5+20;
    
    ll a[N],b[N],book1[N],book2[N],book3[N];
    
    int main()
    {
        int n,x;
        while(cin>>n)
        {
            memset(book1,0,sizeof(book1));
            memset(book2,0,sizeof(book2));
            memset(book3,0,sizeof(book3));
            for(int i=0; i<n; i++)
            {
                cin>>a[i];
                book1[a[i]]++;
            }
            for(int i=0; i<n-1; i++)
            {
                cin>>b[i];
                book2[b[i]]++;
            }
            for(int i=0; i<n; i++)
            {
                x=a[i];
                if(book1[x]&&!book2[x])
                {
                    if(!book2[x])
                    {
                        cout<<x<<endl;
                        break;
                    }
                    else
                        book2[x]--;
                }
            }
            for(int i=0; i<n-2; i++)
            {
                cin>>x;
                book3[x]++;
            }
            for(int i=0; i<n-1; i++)
            {
                x=b[i];
                if(book2[x])
                {
                    if(!book3[x])
                    {
                        cout<<x<<endl;
                        break;
                    }
                    else
                        book3[x]--;
                }
            }
        }
        return 0;
    }
    View Code
  • 相关阅读:
    DOM对象
    多态
    封装和继承
    析构函数
    构造函数
    二维数组
    javascript的基本语法
    javascript数组
    js
    BOM和DOM的区别
  • 原文地址:https://www.cnblogs.com/OFSHK/p/12507330.html
Copyright © 2020-2023  润新知