zoukankan      html  css  js  c++  java
  • 【HDU 5835】Danganronpa(分配礼物)

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

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

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

    #include <cstdio>
    #include <algorithm>
    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
    ",cas,min(sum/2,(sum-m)*2+1));
        }
    }

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

  • 相关阅读:
    Vue常用特性-表单基本操作和表单修饰符
    Tab选项卡
    Vue模板语法
    Vue基本使用
    Vue概述
    Express框架
    模板引擎artTemplate
    MongoDB增删改查操作
    数据库概述及环境搭建
    请求响应原理及HTTP协议
  • 原文地址:https://www.cnblogs.com/flipped/p/5773266.html
Copyright © 2011-2022 走看看