6-洛谷入门赛#51赛后总结

洛谷入门赛#51[LGR-300-Div.4]赛后总结

比赛概述+难点分析:

  1. 本场比赛共6道题,时长共2小时
  2. 比赛为IOI赛制(比赛时可以看到分数和排名)
  3. T1,T2,T3较简单,其他较难,没做出来ToT
  4. 官方公布难度(以洛谷题目难度为准)为"红橙橙橙黄绿"

题目分析

T1 千秋的西红柿里有多少果汁

原题链接

题目分析:本题考查基本数组和循环结构,没任何难度。

完整AC代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<bits/stdc++.h>
using namespace std;
long long n,v[100005],w[100005],sumv,sumw;
double ans;
int main(){
cin >> n;
for(int i=1;i<=n;i++){
cin >> v[i];
sumv+=v[i];
}
for(int i=1;i<=n;i++){
cin >> w[i];
sumw+=w[i];
}
ans=1.0*sumw/sumv;
cout << fixed << setprecision(6) << ans;
return 0;
}

T2 千秋的数学探究活动没有问题

原题链接

题目分析:先将所有数的和算出来,在暴力枚举,再与最大值比较,注意最大值是字符串形式!!!最后输出最大值即可。

完整AC代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include<bits/stdc++.h>
using namespace std;
long long n,a[1000005],k,sum;
string s1,maxx;
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n >> k;
for(int i=1;i<=n;i++){
cin >> a[i];
sum+=a[i];
}
s1=to_string(sum);
maxx=s1;
long long len=s1.length();
if(k>len){
k=n;
}
for(int l=1;l<=k;l++){
for(int i=0;i<len-l+1;i++){
string tmp=s1;
reverse(tmp.begin()+i,tmp.begin()+i+l);
if(tmp>maxx) maxx=tmp;
}
}
cout << maxx;
return 0;
}

T3 千秋的进制转换应该比较快

原题链接

题目分析:这题考查最基础的进制转换,最基础的思路就是先将16进制字符串转成10进制整数,再转成2进制,但是注意字符串长度可能比较长,在16进制转10进制时常规方法会爆 long long ,强烈建议用bitset,能直接转为二进制,STL好用!

完整AC代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<bits/stdc++.h>
using namespace std;
int n;
string s,ans;
int main(){
cin >> n >> s;
for(int i=0;i<n;i++){
long long m=0;
if(s[i]>='0'&&s[i]<='9'){
m=s[i]-'0';
ans+=bitset<4>(m).to_string();
}else{
m=s[i]-'A'+10;
ans+=bitset<4>(m).to_string();
}
}
while(ans[0]=='0'&&ans.length()>1) ans.erase(0,1);
cout << ans;
return 0;
}

T4 千秋的研究并不聚焦稀疏矩阵乘法

原题链接

题目分析:无

完整AC代码

1

T5 千秋的质数定义比较不一般

原题链接

题目分析:无

完整AC代码

1

T6 千秋的键盘为什么如此奇怪

原题链接

题目分析:无

完整AC代码

1


EOF