[关闭]
@DingCao-HJJ 2015-10-20T17:47:22.000000Z 字数 439 阅读 1126

sicily_1134 积木分发

sicily 贪心算法


题目链接

思路

贪心算法:让需求较少的人先完成积木,如果这样子也不能满足后面的人的需求的话,那就失败。

代码

  1. // Problem#: 1134
  2. #include<stdio.h>
  3. int main() {
  4. int i, j1, j2, n;
  5. int s, a[10000 + 10] = { 0 }, b[10000 + 10] = { 0 };
  6. while (scanf("%d %d", &n, &s) && n) {
  7. for (i = 0; i < n; i++) scanf("%d %d", &a[i], &b[i]);
  8. for (j1 = 0; j1 < n; j1++) {
  9. for (j2 = j1; j2 < n; j2++) {
  10. if (b[j2] < b[j1]) {
  11. a[j2] ^= a[j1] ^= a[j2] ^= a[j1];
  12. b[j2] ^= b[j1] ^= b[j2] ^= b[j1];
  13. }
  14. }
  15. }
  16. for (i = 0; i < n; i++) {
  17. if (s >= b[i])
  18. s += a[i];
  19. else
  20. break;
  21. }
  22. printf(i == n ? "YES\n" : "NO\n");
  23. }
  24. return 0;
  25. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注