zoukankan      html  css  js  c++  java
  • Codeforces Round #698 (Div. 2)

    A. Nezzar and Colorful Balls

    签到题:

    #include<bits/stdc++.h>
    #define ll long long
    using namespace std;
    int a[110];
    int main()
    {
        int t;
        cin>>t;
        while(t--)
        {
            int n;
            cin>>n;
            int ans = 0;
            for(int i=1;i<=n;i++)
            {
                cin>>a[i];
            }
            int q = 1;
            for(int i=1;i<=n;i++)
            {
                if(a[i]==a[i-1])
                {
                    q++;
                }
                else{
                    
                    ans = max(q,ans);
                    q = 1;
                }
            }
            ans = max(q,ans);
            cout<<ans<<endl;
        }
    }

    B. Nezzar and Lucky Number

    题意:给出n个询问数,和一个幸运数字,看他能不能被几个带幸运数字的数或者幸运数字的倍数相加而得到。

    题解:只要看给出的d*10之间的讨论一下,看哪几个是不可能的,大于等于d*10的都是可以的。

    #include<bits/stdc++.h>
    #define ll long long
    using namespace std;
    int a[110];
    int q,d;
    map<int,int>mp;
    void init()
    {
        for(int i=1;i<=10;i++)
        {
            int ans = d*i;
            for(int j=0;ans+j<=d*10;j+=10)
            {
                mp[j+ans] = 1;
            }
        }
    }
    int main()
    {
        int t;
        cin>>t;
        while(t--)
        {
            cin>>q>>d;
            mp.clear();
            init();
            while(q--)
            {
                int x;
                cin>>x;
                //cout<<mp[x]<<endl;
                if(x<=d*10&&mp[x] == 1)
                {
                    puts("YES");
                    continue;
                }
                if(x>d*10)
                {
                    puts("YES");
                    continue;
                }
                
                    puts("NO");
            }
        }
    }

    C. Nezzar and Symmetric Arrary

    题意:给出2*n个数字,看是否能构造出2*n个数a[i],且每个数都能在数组找到相反数即b[i] 存在b[j]==-b[i](j!=i),a[i] = 

    题解:a数组必须满组不同的个数为n,不能出现奇数,sum = sum+ (b[i]/2-sum)/i,满足(b[i]/2-sum)>0&&(b[i]/2-sum)%i==0。

    -4 -3 -2 -1 0 1 2 3 4

    不难发现4到3和-3的距离和=2 * 4 ,4到-2 2和4到-1 1的距离和也都为2 * 4,在此可以发现规律一个较大的数到两个较小的数的距离和等于其自身二倍。

    观察0 1 2 -1 -2…到4 -4的距离和为都为2*4,又发现了一个规律一个绝对值较小的数和两个绝对值比它大的正负数的距离和=二倍大数的绝对值。

    #include<bits/stdc++.h>
    /*#if(__cplusplus == 201103L)
    #include <unordered_map>
    #include <unordered_set>
    #else
    #include <tr1/unordered_map>
    #include <tr1/unordered_set>
    namespace std
    {
        using std::tr1::unordered_map;
        using std::tr1::unordered_set;
    }
    #endif*/
    #define ll long long int
    using namespace std;
    ll a[200005];
    ll b[200005];
    inline ll rd()
    {
        ll x = 0;
        ll f = 1;
        char ch = getchar();
        while(ch<'0'||ch>'9')
        {
            if(ch == '-') f = -f;
            ch = getchar();
        }
        while(ch>='0'&&ch<='9')
        {
            x = x*10 + ch - '0';
            ch = getchar();
        }
        return f*x;
    }
    int t;
    //int n;
    //int a[N];
    map<ll,int> mp;
    bool cmp(int aa,int bb)
    {
        return bb>aa;
    }
    ll c[200005];
    int main() {
        ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
        cin>>t;
        while(t--){
            bool flag = true;
            int n;
            cin>>n;
            for(int i=1;i<=2*n;i++)
            {
                cin>>a[i];
                if(a[i]%2)
                {
                    flag = false;
                }
            }
            sort(a+1,a+1+2*n);
            int ans = 1;
            for(int i=1;i<=2*n;i+=2)
            {
                b[ans++] = a[i];
                if(a[i]!=a[i+1]||a[i]==a[i+2])
                {
                    flag = false;
                }
            }
            //sort(b+1,b+n+1,cmp);
            ll sum = 0;
            for(int i=n;i>=1;i--)
            {
                if((b[i]/2-sum)<=0||(b[i]/2-sum)%i!=0)
                {
                    flag = false;
                    break;
                }
                sum = sum+ (b[i]/2-sum)/i;
                //cout<<b[i]<<" "<<sum<<endl;
            }
            if(flag) puts("YES");
            else puts("NO");
        }
     
        return 0;
    }
  • 相关阅读:
    程序员那些事
    Android studio导入eclipse工程时出现中文全部乱码问题
    环境搭建贴
    Android涉及到的网址都记录在这把~~~~
    好书记录
    网络资源整理
    C# 资源
    samba 服务器
    我的虚拟机上网记录
    共享资源链接
  • 原文地址:https://www.cnblogs.com/lcsdsg/p/14375501.html
Copyright © 2011-2022 走看看