zoukankan      html  css  js  c++  java
  • Luogu U18738

    Luogu U18738

    题意:有n个人来分工命题m个问题,给每道题一个难度值,每个人出一道或两道题,若人员充足,可以有一些人不出题。求在满足条件的方案中,

    使得对于所出题目难度之和最大的那个人,这个难度之和最小。

    思路:对这个序列排序,若命题人的数量大于题目数量,那么每个人可以只出一道题,那么答案肯定是序列中最大的那个值。

    若不满足,则需要m-n个人来出两道题,那么采用贪心法,为使最后这个序列中的最大值是所有方案中最小的,那么我们需要使

    1至(m-n)*2这个序列中的最大值最小,那么就从头尾取起即可,最后记得还要与序列中的最大值比较

    这题与Luogu1094有点类似。。。

    #include<cstdio>
    #include<algorithm>
    #define maxn 200050
    using namespace std;
    int a[maxn];
    int read(){
        int w=0;char c=getchar();
        while(c<'0'||c>'9') c=getchar();
        while(c>='0'&&c<='9') w=w*10+c-48,c=getchar();
        return w;
    }
    int main(){
        int n,m,y,i,ans=-2147483647;
        n=read();m=read();
        for(i=1;i<=n;i++)
        a[i]=read();
        sort(a+1,a+1+n);
        if(m>=n){
            printf("%d",a[n]);return 0;
        }
        y=n-m;
        for(i=1;i<=y;i++){
            ans=max(ans,a[i]+a[y*2-i+1]);
        }
        printf("%d",max(ans,a[n]));
        return 0;
    }
    Let's Splay
  • 相关阅读:
    windows常规
    oracle常规操作
    idea使用
    java-maven
    java-rabbimq
    centos7 rabbitMq 安装教程
    Leetcode 332.重新安排行程
    Leetcode 334.递增的三元子序列
    Leetcode 331.验证二叉树的前序序列化
    Leetcode 330.按要求补齐数组
  • 原文地址:https://www.cnblogs.com/Fish-/p/8379310.html
Copyright © 2011-2022 走看看