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;
    }
  • 相关阅读:
    git 的常用命令(未完待补充)
    Mysql占用内存过高参数优化
    mysql安全基线设置
    redis安全基线设置
    centos7安全基线设置
    检查shell脚本
    redis安装和配置
    TIME_WAIT状态全是3306解决办法
    PHP message: PHP Fatal error: Allowed memory size of 134217728 bytes exhausted 错误
    tcp的三次握手和四次挥手(二)
  • 原文地址:https://www.cnblogs.com/lcsdsg/p/14375501.html
Copyright © 2011-2022 走看看