zoukankan      html  css  js  c++  java
  • Gym-101911K Medians and Partition

    题目:https://vjudge.net/problem/Gym-101911K

    题意:n为数组长度,ai为数组元素,求数组分成的最大组数,使得每一组在排序后的中位数大于等于m。(偶数长度的分组中位数为中间两个数的较小值)。

    分析:容易知道比m大的数一组一个可以使分组最多。而对于比m小的数,我们先记录比m小的数的数量,然后通过计算可以知道,假设一组内比m小的数有k个,那么不小于m的数至少要有k+1个,从而得到结论:所有比m小的数放在一组,才能使比m大的数消耗最少,因此答案呼之欲出了。

     1 #include <stdio.h>
     2 int main(void){
     3     int num=0;
     4     int n,m;
     5     int x;
     6     scanf("%d %d",&n,&m);
     7     int k=n;
     8     while(k--){
     9         scanf("%d",&x);
    10         if(x<m)num++;
    11     }
    12     //最大组数:n-num-num-1+1=n-2*num(要加回自己这一组,如果比0小就是0) 
    13     printf("%d",n-num*2>0?n-num*2:0);
    14     return 0;
    15 }
  • 相关阅读:
    Qt 去除控件边框线
    Qt 自定义可编辑 模型视图
    Qt double类型输出问题
    vue实例
    初识vue
    python中的数据类型
    python 列表解析式
    Goland常用快键键 mac pro
    文档对象模型DOM
    正则表达式
  • 原文地址:https://www.cnblogs.com/yanying7/p/12494384.html
Copyright © 2011-2022 走看看