• ICPC训练联盟周赛Preliminaries for Benelux Algorithm Programming Contest 2019


    I题

    求 a 数组平方的前缀和和求 a 数组后缀和,遍历一遍即可

    AC代码

    #include<iostream>
    #include<cmath>
    using namespace std;
    int a[1000005];
    long long l[1000005], r[1000005];
    int main(){
     int i,n;
     cin>>n;
     long long int sum;
     for(i=0;i<n;i++){
      cin>>a[i];
     }
     l[0]=a[0]*a[0];
     for(i=0;i<n;i++){
      l[i]=l[i-1]+a[i]*a[i]; 
     }
     for(i=n-1;i>=0;i--){
      r[i]=r[i+1]+a[i];
     }
     for(i=0;i<n;i++){
      sum=max(sum,l[i]*r[i+1]);
     }
     cout<<sum<<endl;
     return 0;
    }

    F题

    若 n % 2 == 0 且 n % 4 != 0,n = (m - k)(m + k)

    AC代码

    #include<iostream>
    #include<algorithm>
    #include<cstdio>
    #include<cmath>
    #include<string>
    #include<map>
    #include<sstream>
    #include<cstring>
    using namespace std;
    /*题意就是求满足n=m^2-k^2的任意一组m和k的解
    m^2-k^2=(m+k)*(m-k)
    可以把n分为奇数和偶数两种情况
    */
    int main()
    {
        long long n,s,m,k,i,j,p=0;
        cin>>n;
        if(n%2==0)//n是偶数
        {
            for(i=2; i*i<=n; i+=2)//找出n的两个因子i和j,且i*j==n,i<j
            {
                if(n%i==0)//先找出因子i
                {
                    j=n/i;//再求出另一个因子j,列一个方程组:m+k=i,m-k=j,求m和k
                    if((j+i)%2==0)//这一步相当于解方程组,如果j+i为偶数说明方程组有解
                    {
                        m=(j+i)/2;
                        k=(j-i)/2;
                        cout<<m<<" "<<k<<endl;
                        p=1;
                        break;
                    }
                    if(p==1)
                    {
                        break;
                    }
                }
            }
            if(p==0)
            {
                cout<<"impossible"<<endl;
            }
        }
        else//n是奇数时有一种情况一定是对的,就是m+k=n,m-k=1的情况,所以n/2=k,k+1=m。比如15=15*1=(8+7)*(8-7)
        {
            s=n/2;
            cout<<s+1<<" "<<s<<endl;
        }
        return 0;
    }
  • 相关阅读:
    Python-操作符与基本数据类型
    初识Python
    HDU 1166 敌兵布阵(线段树求sum)
    HDU 1754 I Hate It(线段树求max)
    HDU 1176 免费馅饼
    HDU 1466 计算直线的交点数
    HDU 1506 Largest Rectangle in a Histogram(最大矩形面积)
    AYOJ 单词接龙(搜索)
    AYOJ 传球游戏(递推)
    AYOJ 方格取数(多进程DP)
  • 原文地址:https://www.cnblogs.com/nanan/p/12511893.html
Copyright © 2020-2023  润新知