当前位置:   article > 正文

USACO 1月 2021-2022 January Contest Bronze 题解_usaco 2024 january contest, bronze

usaco 2024 january contest, bronze

目录

你好啊我又又又来了

要准备usaco的铁铁们可以参考这个文章哦!USACO题库 - 比Usaco Training更好用的网站_GeekAlice的博客-CSDN博客https://blog.csdn.net/GeekAlice/article/details/122291933

第一题

Problem 1. Herdle

第二题

Problem 2. Non-Transitive Dice​编辑

第三题

Problem 3. Drought


你好啊我又又又来了

要准备usaco的铁铁们可以参考这个文章哦!USACO题库 - 比Usaco Training更好用的网站_GeekAlice的博客-CSDN博客https://blog.csdn.net/GeekAlice/article/details/122291933

这次是青铜的题解,

我还会写银组的哦!

:))

话不多说,上题解:


第一题

Problem 1. Herdle

       

题解

  

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define MAXN 100
  4. #define MOD 1000000007
  5. int n, guess_count[26], actual_count[26], green, yellow;
  6. string actual[3], guess[3];
  7. string line;
  8. using namespace std;
  9. int main(){
  10. for(int i=0;i<3;i++){
  11. cin>>actual[i];
  12. for(int j=0;j<3;j++){
  13. actual_count[actual[i][j]-'A']++;
  14. }
  15. }
  16. for(int i=0;i<3;i++){
  17. cin>>guess[i];
  18. for(int j=0;j<3;j++){
  19. guess_count[guess[i][j]-'A']++;
  20. }
  21. }
  22. for(int i=0;i<3;i++){
  23. for(int j=0;j<3;j++){
  24. if(actual[i][j]==guess[i][j]){
  25. green++;
  26. guess_count[guess[i][j]-'A']--;
  27. actual_count[actual[i][j]-'A']--;
  28. }
  29. }
  30. }
  31. for(int i=0;i<26;i++){
  32. yellow+=min(actual_count[i],guess_count[i]);
  33. }
  34. cout<<green<<endl;
  35. cout<<yellow;
  36. }

第二题

Problem 2. Non-Transitive Dice

 

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. using Die = array<int, 4>;
  4. bool beats(const Die& a, const Die& b) {
  5. int wins = 0, losses = 0;
  6. for(int i = 0; i < 4; i++) for(int j = 0; j < 4; j++) {
  7. if (a[i] > b[j]) ++wins;
  8. if (a[i] < b[j]) ++losses;
  9. }
  10. return wins > losses;
  11. }
  12. bool non_transitive(const Die& A, const Die& B) {
  13. for(int a = 1; a <= 10; a++) for(int b = 1; b <= 10; b++) for(int c = 1; c <= 10; c++) for(int d = 1; d <= 10; d++) {
  14. Die C{a,b,c,d};
  15. if (beats(A,B) && beats(B,C) && beats(C,A)) return 1;
  16. if (beats(B,A) && beats(C,B) && beats(A,C)) return 1;
  17. }
  18. return 0;
  19. }
  20. int main() {
  21. int N;
  22. cin >> N;
  23. for(int i = 0; i < N; i++) {
  24. Die A, B;
  25. for(int j = 0; j < 4; j++) cin >> A[j];
  26. for(int j = 0; j < 4; j++) cin >> B[j];
  27. if(non_transitive(A,B)) {
  28. cout << "yes\n";
  29. } else {
  30. cout << "no\n";
  31. }
  32. }
  33. }

第三题

Problem 3. Drought

 

  1. #include<bits/stdc++.h>
  2. #define int long long
  3. #define nl "\n"
  4. using namespace std;
  5. int exe(){
  6. int ans = 0, n;
  7. cin >> n; vector<int> h(n);
  8. for (int& i : h) cin >> i;
  9. if (n == 1) return 0;
  10. for (int j : {1, 2}){
  11. for (int i = 1; i < n - 1; i++){
  12. if (h[i] > h[i - 1]){
  13. int dif = h[i] - h[i - 1];
  14. ans += 2 * dif, h[i + 1] -= dif, h[i] = h[i - 1];
  15. }
  16. }
  17. if (h[n - 1] > h[n - 2]) return -1;
  18. // now h is non-increasing
  19. reverse(h.begin(), h.end());
  20. // now h is non-decreasing
  21. }
  22. // now h is all equal
  23. return h[0] < 0 ? -1 : ans;
  24. }
  25. int main(){
  26. cin.tie(0)->sync_with_stdio(0); cin.exceptions(ios_base::failbit);
  27. int t; cin >> t;
  28. while (t--) cout << exe() << nl;
  29. }

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

闽ICP备14008679号