当前位置:   article > 正文

CSP CCF认证2023-03_ccf csp认证

ccf csp认证

目录

一些考试感受

202303-1 田地丈量

202303-2 垦田计划


一些考试感受

前段时间刚去参加了ccf考试,感受就是:ccf的题目比较扣细节,如果有一个细节没有照顾到,就不能全部AC。而且ccf考试是不能到看你哪里出错了的,你只能知道自己的第几条测试没有AC过。如果你觉得自己的思路是正确的,自己测试的结果也是正确的,建议再仔细读一遍题目,看看有哪些点是你漏看或者没有考虑到的。

202303-1 田地丈量

这道题我刚看的时候有点慌,我以为这道题选定区域的时候是有交集的。我当时没想出怎么计算重合的区域,就先假设不会重合,写了一份代码,没想到竟然AC了。是我把这道题想复杂了。以下是我的代码:

  1. #田地丈量
  2. for i in range(n):
  3. x1, y1, x2, y2 = map(int, input().split())
  4. if x1 >= a or y1 >= b or x2 <= 0 or y2 <= 0:
  5. continue
  6. if 0 <= x1 <= a:
  7. stx = x1
  8. elif x1 < 0:
  9. stx = 0
  10. if 0 <= y1 <= b:
  11. sty = y1
  12. elif y1 < 0:
  13. sty = 0
  14. if 0 < x2 <= a:
  15. enx = x2
  16. elif x2 > a:
  17. enx = a
  18. if 0 < y2 <= b:
  19. eny = y2
  20. elif y2 > b:
  21. eny = b
  22. sum_ += (enx-stx)*(eny-sty)
  23. print(sum_)

202303-2 垦田计划

这道题如果通过暴力的方式,拿70分还是很简单的,但是后面的测试会超时。

如果想要拿100分,就要思考如何优化代码。以下是我考试的时候AC过的代码:

  1. from collections import Counter
  2. n, m, k = map(int, input().split())
  3. blocks = Counter()
  4. min_t = float('inf')
  5. max_t = 0
  6. for _ in range(n):
  7. t, c = map(int,input().split())
  8. if t < min_t:
  9. min_t = t
  10. if t > max_t:
  11. max_t = t
  12. blocks[t] += c
  13. #print(blocks)
  14. cost = 0
  15. temp = 0
  16. for i in range(max_t,k-1,-1):
  17. if m - cost < blocks[i]:
  18. print(i)
  19. break
  20. if i in blocks:
  21. temp += blocks[i]
  22. cost += (blocks[i] + temp)
  23. else:
  24. print(k)

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

闽ICP备14008679号