• 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

     

     

  • 相关阅读:
    gcc 時 mpreferredstackboundary
    WordPress Charset SQL Injection Vulnerability
    assembly note
    用GDB示範Buffer Overflow 的過程
    Microsoft Dynamics CRM 4.0 文章页面 添加自定义按钮
    Microsoft Dynamics CRM 4 将电话记录绑定在DataGrid上。
    Microsoft Dynamics CRM 4 GenerateAuthenticationHeader() 函数
    jQuery 中的 Ajax $.ajax() load() $.get() $.post() $.getJSON() $.getScript()
    Javascript 弹出窗体
    POST与GET的区别
  • 原文地址:https://www.cnblogs.com/subject/p/12501006.html
Copyright © 2020-2023  润新知