博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【HDU 5835】Danganronpa(分配礼物)
阅读量:7062 次
发布时间:2019-06-28

本文共 611 字,大约阅读时间需要 2 分钟。

10种礼物,每种有ai个,每个小朋友分两个礼物,其中普通礼物要求相邻两人的不能一样,求最多分给几个小朋友。

sum/2是最多的情况。什么时候发不了那么多,就是当max很大,无论怎么发,都发不完max。那这时候贪心策略就是一个小朋友发max*2,下一个发max+其它的,再下一个发max*2,再下一个发max+其它的...。

所以答案是sum/2和(sum-max)*2(一个其它的和3个max组合发给两个小朋友)+1(多出的max发给一个小朋友)的最小值。

#include 
#include
using namespace std;int t,n,x,sum,m;int main() { scanf("%d",&t); for(int cas=1;cas<=t;cas++){ sum=m=0; scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%d",&x); sum+=x; m=max(m,x); } printf("Case #%d: %d\n",cas,min(sum/2,(sum-m)*2+1)); }}

 

  虽然问题小,但是不容易想对。

转载地址:http://yrnll.baihongyu.com/

你可能感兴趣的文章
编程常用动词细微差别
查看>>
如何通过Dataworks禁止MaxCompute 子账号跨Project访问
查看>>
聊聊reactive streams的backpressure
查看>>
android studio 2 3 的maven坑
查看>>
来分享一个我自己写的HTML模板引擎,Leopard
查看>>
基于阿里云数加构建企业级数据分析平台
查看>>
React Native安卓模拟器调出Dev Setting菜单
查看>>
Laravel整合Bootstrap 4的完整方案
查看>>
Swift枚举相关值
查看>>
少走弯路,给Java 1~5 年程序员的建议
查看>>
08.Android之View事件问题
查看>>
[ JavaScript ] 数据结构与算法 —— 链表
查看>>
Java程序员幽默爆笑锦集
查看>>
小程序button引导用户授权
查看>>
机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
查看>>
我是如何设计 Upload 上传组件的
查看>>
彻底搞懂浏览器Event-loop
查看>>
java2019面试题北京
查看>>
Promise面试题2实现异步串行执行
查看>>
ECS应用管理最佳实践
查看>>