鑫汇工作室邀请赛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;
}