洛谷入门赛#51[LGR-300-Div.4]赛后总结
比赛概述+难点分析:
- 本场比赛共6道题,时长共2小时
- 比赛为IOI赛制(比赛时可以看到分数和排名)
- T1,T2,T3较简单,其他较难,没做出来ToT
- 官方公布难度(以洛谷题目难度为准)为"红橙橙橙黄绿"
题目分析
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代码
T5 千秋的质数定义比较不一般
原题链接
题目分析:无
完整AC代码
T6 千秋的键盘为什么如此奇怪
原题链接
题目分析:无
完整AC代码
EOF