题解与讨论区 1234: 炮打Rolnan城

题解与讨论区 1234: 炮打Rolnan城

[命题人 : ]
时间限制 : 1.000 sec  内存限制 : 128 MB

返回问题页面

题目描述

题目背景

Rolnan惹得LiuGod生气了,LiuGod决定给他一点教训。

题目描述

Rolnan城有 \(n(1\leq n \leq 10^5)\) 个堡垒,每个堡垒有生命值 \(h_i(1\leq h_i \leq 10^9)\),当堡垒的生命值变为0,它将被摧毁,LiuGod可以使用魔法打击这些堡垒。

LiuGod的每次魔法可以对任意一个堡垒造成1点伤害;特别的,由于LiuGod很崇拜clearlove7,他的每第 7 次魔法(7/14/21/...)会对所有的堡垒造成1点伤害。

现在LiuGod为了彻底打击Rolnan,决定要在最后一次打击中一次性全部摧毁Rolnan城的堡垒,现在他想询问能不能完成。

注意,每次打击都必须完成;同时要保证每个堡垒只在最后一次打击中被摧毁。


第1234题的题解

重型榴弹手

Newbie 的题解


只需要考虑两点:

  • 生命值总数是否能被(n+6)整除
  • 生命值最小的堡垒会不会先被攻破

特判,当n = 1时,一定可行

Code:

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstring>
  4. using namespace std;
  5. typedef long long ll;
  6. int main()
  7. {
  8. int t;
  9. scanf("%d", &t);
  10. while (t--)
  11. {
  12. int n;
  13. ll num;
  14. scanf("%d",&n);
  15. ll MIN = 1e10,sum = 0;
  16. for (int i = 1; i <= n; ++i)
  17. {
  18. scanf("%lld",&num);
  19. sum += num;
  20. if (num < MIN)
  21. MIN = num;
  22. }
  23. if (n == 1){
  24. printf("YES\n");
  25. continue;
  26. }
  27. if (sum%(n+6) || MIN<sum / (n + 6))
  28. printf("NO\n");
  29. else printf("YES\n");
  30. }
  31. return 0;
  32. }



点赞 0
举报