当前位置:   article > 正文

蓝桥云课-2024-第5场入门赛_蓝桥云课的小白入门赛到时还能做吗

蓝桥云课的小白入门赛到时还能做吗

参赛地址:

第 5 场 小白入门赛 - 蓝桥云课 (lanqiao.cn)

题目列表:

 第一题:是签到题,就不需要解释了

第二题:欢迎参加福建省大学生程序设计竞赛(题目)

 主要思路:

就是分类,就是看有多少组,主要用到哈希表,以int为键(a),后面设个动态数组,存放不同的b

如果b在这个数组里能找到,结果不加1,否则,结果加1,加入数组。

  1. #include <iostream>
  2. using namespace std;
  3. #include<map>
  4. #include<vector>
  5. #include<algorithm>
  6. int main()
  7. {
  8. int Q;
  9. cin>>Q;
  10. int a,b;
  11. int cnvt=0;
  12. map<int,vector<int>>h;
  13. while(Q--){
  14. cin>>a>>b;
  15. if(h[a].size()==0) cnvt++,h[a].push_back(b);
  16. else{
  17. if (find(h[a].begin(), h[a].end(), b) != h[a].end()){
  18. }
  19. else{
  20. cnvt++;
  21. h[a].push_back(b);
  22. }
  23. }
  24. }
  25. cout<<cnvt;
  26. // 请在此输入您的代码
  27. return 0;
  28. }

第三题:匹配二元组的数量【算法赛】

 主要思路:

主要就该公式化简,得出          i*ai=j*aj        所以得出判断满足二元组的条件,就是下标与其对应数组的值,因为这个值只和数组的一个状态有关,我们在输入的时候立马改变就可以i*ai

这里要注意一点,要注意到你数组是从0开始储存,还是从1开储存

然后开辟一个数组在存储所有出现的整数(不存在重复),再用哈希表去放置对应的次数

因为是二元组,两两组队,所以每一个的次数为n*(n-1)/2

代码:

  1. #include <iostream>
  2. #include<vector>
  3. #include<map>
  4. using namespace std;
  5. int main()
  6. {
  7. int n;
  8. cin>>n;
  9. int i,j;
  10. long long arr[n];
  11. vector<long long >l;
  12. map<long ,long >h;
  13. for(i=0;i<n;i++){
  14. cin>>arr[i];
  15. arr[i]=arr[i]*(i+1);
  16. h[arr[i]]++;
  17. if(h[arr[i]]==1){
  18. l.push_back(arr[i]);
  19. }
  20. }
  21. // i*ai ==j*aj
  22. long long cnvt=0;
  23. for(auto s:l ){
  24. cnvt+=h[s]*(h[s]-1)/2;
  25. }
  26. cout<<cnvt;
  27. return 0;
  28. }

第四题:元素交换【算法赛】

 代码:

  1. #include <iostream>
  2. using namespace std;
  3. int a[200010];
  4. int main()
  5. {
  6. int n,t1=0,t2=0;
  7. cin>>n;
  8. for(int i=0;i<2*n;i++){
  9. cin>>a[i];
  10. if(a[i]==i%2) t1++;
  11. else t2++;
  12. }
  13. cout<<min(t1/2,t2/2);
  14. return 0;
  15. }

第五题:

代码:这个不是本人,本人有点了解不了

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int main()
  4. {
  5. long long n,ans=0;
  6. cin>>n;
  7. long long t=floor(sqrt(n)),tt=n-t*t;
  8. ans=(t-2)*(t-2)*4+4*(t-2)*3+4*2;
  9. if(tt>0){
  10. ans+=2;
  11. tt--;
  12. ans+=min(tt,t-1)*4;
  13. tt-=t-1;
  14. }
  15. if(tt>0){
  16. ans+=2;
  17. tt--;
  18. ans+=min(tt,t)*4;
  19. tt-=t;
  20. }
  21. if(tt>0){
  22. ans+=2;
  23. tt--;
  24. ans+=min(tt,t)*4;
  25. tt-=t;
  26. }
  27. if(tt>0){
  28. ans+=2;
  29. tt--;
  30. ans+=min(tt,t+1)*4;
  31. tt-=t+1;
  32. }
  33. cout<<ans;
  34. return 0;
  35. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/440774
推荐阅读
相关标签
  

闽ICP备14008679号