这题自己还打算用优先队列。。。。其实就是个贪心的水题。
参考http://blog.youkuaiyun.com/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语言实现了一个简单有效的算法。
1564

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



