这题自己还打算用优先队列。。。。其实就是个贪心的水题。
参考http://blog.csdn.net/liangzhaoyang1/article/details/52209832
题意:给你有n种礼物,第i种有ai个。现在要把这些礼物分给一排同学,要求每个人发普通礼物和神秘礼物各一个,要求相邻两人的普通礼物不能为同一种,神秘礼物没有限制,普通礼物和神秘礼物都从这n个礼物中选取。问最多能发给多少人。
int x;
int sum = 0, maxx = 0;
for(int i=1; i<=n; i++) {
scanf("%d", &x);
sum += x;
maxx = max(maxx, x);
}
int ans = min(sum/2, (sum-maxx)*2+1);
printf("Case #%d: %d\n", cas++, ans);
}
探讨了如何通过贪心算法解决礼物分配问题,确保每位同学收到不同类型的普通礼物,而神秘礼物则不受限制。使用C语言实现了一个简单有效的算法。
&spm=1001.2101.3001.5002&articleId=77284960&d=1&t=3&u=62e7623de5b14a7d92bd97645c1e6a83)
327

被折叠的 条评论
为什么被折叠?



