鑫汇工作室邀请赛2-DIV4题解

· · 个人记录

以下为本次比赛的题解,请没能AC部分题目的同学仔细阅读。

希望发现问题或表述不清楚、不完整的地方的同学通过洛谷私信告诉我,会有相应的酷町豆奖励。

部分无需特别注意的点没有提到,敬请谅解。

U190272 鑫汇工作室邀请赛2-DIV4签到题

代码:

#include <bits/stdc++.h>
using namespace std;
int main()
{
    cout<<1;
}

U190467 一维数组

根据题意,输入一维数组并输出。

注意:1≤ai的位数≤1000,所以要用字符串数组。

代码:

#include <bits/stdc++.h>
using namespace std;
string a[1005];
int n;
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i];
    for(int i=1;i<=n;i++) cout<<a[i]<<" ";  
}

U190560 求和

根据题意,输入一维数组并求和。

注意:1≤最终结果的位数≤15,所以要用long long数组。

代码:

#include <bits/stdc++.h>
using namespace std;
long long a[1001],sum;
int n;
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
        sum+=a[i];
    } 
    cout<<sum;
}

U190573 求最大值

根据题意,输入一维数组并求最大值。

F1:普通找最大值。

采用打擂台的方法,将目前的最大值和后面的所有数进行比较,如果后面有数比目前的最大值大,就替换掉目前的最大值;否则继续进行比较。

代码:

#include <bits/stdc++.h>
using namespace std;
int n,a[1001],maxn=-0x3f3f3f3f;
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
        maxn=max(maxn,a[i]);
    } 
    cout<<maxn;
}

时间复杂度:O(n)

F2:排序找最大值。

直接从小到大排序,排在最后的那个数一定是最大的。

#include <bits/stdc++.h>
using namespace std;
int n,a[1001];
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
    }
    sort(a+1,a+n+1);
    cout<<a[n];
}

时间复杂度:O(nlogn)

在时间上,F1更优,但n≤1000,并没有太大区别。

U190581 排序

根据题意,输入一维数组并排序输出。

代码:

#include <bits/stdc++.h>
using namespace std;
int n,a[1001];
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
    } 
    sort(a+1,a+n+1);
    for(int i=1;i<=n;i++) cout<<a[i]<<" ";
}

U190283 鑫汇工作室邀请赛2-DIV4结束题

代码:

#include <bits/stdc++.h>
using namespace std;
int main()
{
    cout<<1;
}