当前位置:   article > 正文

2024年西安交通大学程序设计校赛

2024年西安交通大学程序设计校赛

A题 签到题

代码如下

  1. //A
  2. #include<iostream>
  3. #include<algorithm>
  4. #define int long long
  5. #define endl '\n'
  6. #define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
  7. using namespace std;
  8. signed main()
  9. {
  10. IOS
  11. int a,b,c,d;
  12. cin>>a>>b>>c>>d;
  13. cout<<a+b+2*c+3*d<<endl;
  14. return 0;
  15. }

B题 签到题

代码如下

  1. //B
  2. #include<iostream>
  3. #include<algorithm>
  4. #include<cmath>
  5. #define int long long
  6. #define endl '\n'
  7. #define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
  8. #define q 3.1415926535
  9. using namespace std;
  10. signed main()
  11. {
  12. IOS
  13. int x,y;
  14. cin>>x>>y;
  15. double r,s,a,b,c,d;
  16. cin>>a>>b;
  17. r=sqrt(x*x+y*y);
  18. c=a*b-(int)(a*b);
  19. printf("%.10f",2*r*sin((c*2*q)/2));
  20. return 0;
  21. }

C题 签到题

代码如下

  1. //C
  2. #include<iostream>
  3. #include<algorithm>
  4. #include<cmath>
  5. #define int long long
  6. #define endl '\n'
  7. #define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
  8. using namespace std;
  9. double x,y,a,b;
  10. signed main()
  11. {
  12. IOS
  13. cin>>a>>b;
  14. x=a/2+b/2;
  15. y=(sqrt(3)*a)/2-(sqrt(3)*b)/2;
  16. printf("%.6f %.6f",x,y);
  17. return 0;
  18. }

D题

思路:这个题题意虽说到了树但其实就考了一个贪心,可以把他给的支配关系用数组存起来,然后找到最多的数,就把这个数当成父节点就行了

代码如下

  1. //D
  2. #include<iostream>
  3. #include<algorithm>
  4. #include<cmath>
  5. #define int long long
  6. #define endl '\n'
  7. #define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
  8. using namespace std;
  9. int m[200010];
  10. signed main()
  11. {
  12. IOS
  13. int a,b,c,d,ma=-1e9,t;
  14. cin>>a>>b;
  15. for(int i=1;i<=b;i++)
  16. {
  17. cin>>c>>d;
  18. m[c]++;
  19. }
  20. for(int i=1;i<=a;i++)
  21. {
  22. if(m[i]>ma)
  23. {
  24. ma=m[i];
  25. t=i;
  26. }
  27. }
  28. for(int i=1;i<=a;i++)
  29. {
  30. if(i==t)
  31. cout<<0<<" ";
  32. else
  33. cout<<t<<" ";
  34. }
  35. return 0;
  36. }

E题

思路:这个也是一个贪心题,就是让给的数从后往前遍历,如果是0就直接输出,不是就把这个数存到下标为这个数的后面

代码如下

  1. //E
  2. #include<iostream>
  3. #include<algorithm>
  4. #include<cmath>
  5. #include<vector>
  6. #define int long long
  7. #define endl '\n'
  8. #define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
  9. using namespace std;
  10. int ma[200010];
  11. vector<int>m[200010];
  12. int n,a,b;
  13. signed main()
  14. {
  15. IOS
  16. cin>>n;
  17. for(int i=1;i<=n;i++)
  18. {
  19. cin>>ma[i];
  20. }
  21. for(int i=n;i>0;i--)
  22. {
  23. if(ma[i]==0)
  24. {
  25. cout<<i<<" ";
  26. for(int j=0;j<m[i].size();j++)
  27. {
  28. cout<<m[i][j]<<" ";
  29. }
  30. }
  31. else
  32. {
  33. m[ma[i]].push_back(i);
  34. for(int j=0;j<m[i].size();j++)
  35. {
  36. m[ma[i]].push_back(m[i][j]);
  37. }
  38. }
  39. }
  40. return 0;
  41. }

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

闽ICP备14008679号