zoukankan      html  css  js  c++  java
  • Preliminaries for Benelux Algorithm Programming Contest 2019(2020.03.14)

    题目地址:https://www.jisuanke.com/contest/7190?view=challenges

    A. Architecture

    题意:给定每行最大数和每列最大数,问矩阵是否存在。

    思路:求出行列的最大值,如果相同则可能,否则不可能;

    AC代码:

    #include<bits/stdc++.h>
    #include<iostream>
    #include<vector>
    #include<queue>
    #include<string>
    #include<list>
    #include<set>
    #include<stack>
    using namespace std;
    typedef long long ll;
    const int maxn = 1e2+10;
    int main()
    {
        int a[maxn];
        int b[maxn];
        int n,m;
        cin>>n>>m; 
        
        for(int i=0;i<n;i++)
        {
            cin>>a[i];
        }
        for(int i=0;i<m;i++)
        {
            cin>>b[i];
        }
        sort(a,a+n);
        sort(b,b+m);
        if(a[n-1]==b[m-1]) cout<<"possible"<<endl;
        else cout<<"impossible"<<endl;
        return 0;
    }
    View Code

     

    B. Bracket Sequence

    题意:给定一个字符串,有括号和数字,最外层数字之间用+,向里用*,依次交替,求出最后的结果

    注意要手动写栈,否则空间不够

    思路:将数字依次存储进栈,遇到 “)” 弹出相应数字相加再压进栈,直到最后。

       用vector 将数字分层 存储,再按照规律+*规律求和

       注意! 算完一层后记得将该层清除,算乘积时  初始值要为1;

    AC代码:

    #include<bits/stdc++.h>
    #include<iostream>
    #include<vector>
    #include<queue>
    #include<string>
    #include<list>
    #include<set>
    #include<stack>
    using namespace std;
    typedef long long ll;
    const int maxn = 1e2+10;
    const ll mod = 1e9+7;
    
    vector<ll> brr[300010],crr;
    int main()
    {
        int n;
        cin>>n;
        int p=0;
        while(n--)
        {
            string s;
            cin>>s;
            if(s[0]=='(') p++;
            else if(s[0]==')')
            {
                
                ll b = 0;
                if(p%2==0)
                {
                    for(int i=0;i<brr[p].size();i++)
                    {
                        b+=brr[p][i];
                        b%=mod;
                    }
                    
                }
                else
                {
                    b=1;
                    for(int i=0;i<brr[p].size();i++)
                    {
                        b*=brr[p][i];
                        b%=mod;
                    }
                }
                brr[p].clear();
                p--;
                brr[p].push_back(b);
                
            }
            else
            {
                ll t = 0;
                for(int i=0;i<s.length();i++)
                {
                    t*=10;
                    t+=s[i]-'0';
                }
                t%=mod;
                brr[p].push_back(t);
            }
        }
        ll ans = 0;
        for(int i=0;i<brr[0].size();i++)
        {
            ans+=brr[0][i];
            ans%=mod;
        }
        cout<<ans<<endl;
        return 0;
        
            
        
    }
    View Code

     

    F. Floor Plan

    题意:给定n 求m,k 满足 n = m^2-k^2

    思路:n = m^2-k^2   = (m-k)(m+k)   设i = m-k ,n = i*(i+2k);遍历找i,求k 看是否存在

    AC代码:

    #include<bits/stdc++.h>
    #include<iostream>
    #include<vector>
    #include<queue>
    #include<string>
    #include<list>
    #include<set>
    #include<stack>
    using namespace std;
    typedef long long ll;
    const int maxn = 1e2+10;
    int main()
    {
        ll n;
        cin>>n;
        ll i;
        for(i=1;i*i<=n;i++)
        {
            if(n%i==0)
            {
                ll j = n/i;
                if((j-i)%2==0)
                {
                    ll k = (j-i)/2;
                    cout<<i+k<<" "<<k<<endl;
                    return 0;
                }
            }
        }
         cout<<"impossible"<<endl;
        return 0;
    }
    View Code

     

     G. Greetings!

    题意:复制字符中的‘e’

    AC代码:

    #include<bits/stdc++.h>
    #include<iostream>
    #include<vector>
    #include<queue>
    #include<string>
    #include<list>
    #include<set>
    #include<stack>
    using namespace std;
    typedef long long ll;
    const int maxn = 1e2+10;
    int main()
    {
        string s;
        cin>>s;
        for(int i=0;i<s.length();i++)
        {
            if(s[i]!='e') cout<<s[i];
            else cout<<"ee";
        }
        cout<<endl;
        return 0;
    }
    View Code

     

    I. Inquiry I

    题意:给定一个数组 且满足式子,求最大值。

     

     

     思路:求后缀和,前缀平方和,遍历找最大值

    AC代码:

    #include<bits/stdc++.h>
    #include<iostream>
    #include<vector>
    #include<queue>
    #include<string>
    #include<list>
    #include<set>
    #include<stack>
    using namespace std;
    typedef long long ll;
    const int maxn = 1e2+10;
    int main()
    {
        int n, a[1000005];
        ll l[1000005], r[1000005];
        scanf("%d", &n);
        for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
        for (int i = 1; i <= n; i++) l[i] = l[i - 1] + a[i] * a[i];
        for (int i = n; i >= 1; i--) r[i] = r[i + 1] + a[i];
        ll ans = 0;
        for (int i = 1; i < n; i++) ans = max(ans, l[i] * r[i + 1]);
        printf("%lld
    ", ans);
     
        return 0;
    }
    View Code

     

     

  • 相关阅读:
    Spring Cloud Hystrix Dashboard的使用 5.1.3
    Spring Cloud Hystrix 服务容错保护 5.1
    Spring Cloud Ribbon 客户端负载均衡 4.3
    Spring Cloud 如何实现服务间的调用 4.2.3
    hadoop3.1集成yarn ha
    hadoop3.1 hdfs的api使用
    hadoop3.1 ha高可用部署
    hadoop3.1 分布式集群部署
    hadoop3.1伪分布式部署
    KVM(八)使用 libvirt 迁移 QEMU/KVM 虚机和 Nova 虚机
  • 原文地址:https://www.cnblogs.com/subject/p/12501006.html
Copyright © 2011-2022 走看看