题目地址

Honk's pool(The Preliminary Contest for ICPC Asia Shenyang 2019 )

题干





代码和解释

本题使用了STL multiset,它与 set 一样可以对元素自动排序,而与 set 不同的是能存多个值相同的元素。

c++代码如下:

#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,k,x;
int i;
int tmp;
while(~scanf("%d%d",&n,&k)){
multiset<int> SS;
multiset<int>::iterator it1,it2;
for(i=0;i<n;i++){
scanf("%d",&x);
SS.insert(x);
}
for(i=0;i<k;i++){
it1=SS.begin();
tmp=*it1;//不能直接改变元素值,否则会打乱顺序。应先删除旧元素,再插入新元素
tmp++;
SS.erase(it1);
SS.insert(tmp); it2=SS.end();
it2--;
tmp=*it2;
tmp--;
SS.erase(it2);
SS.insert(tmp); //for(it1=SS.begin();it1!=SS.end();it1++)
// printf("%d ",*it1);
//printf("\n");
}
it1=SS.begin();
it2=SS.end();
it2--;
printf("%d\n",(*it2)-(*it1));
}
return 0;
}

Honk's pool[STL multiset]的更多相关文章

  1. 详解C++ STL multiset 容器

    详解C++ STL multiset 容器 本篇随笔简单介绍一下\(C++STL\)中\(multiset\)容器的使用方法及常见使用技巧. multiset容器的概念和性质 \(set\)在英文中的 ...

  2. luogu1081 [NOIp2012]开车旅行 (STL::multiset+倍增)

    先用不管什么方法求出来从每个点出发,A走到哪.B走到哪(我写了一个很沙雕的STL) 然后把每个点拆成两个点,分别表示A从这里出发和B从这里出发,然后连边是要A连到B.B连到A.边长就是这次走的路径长度 ...

  3. STL(multiset) UVA 11020 Efficient Solutions

    题目传送门 题意:训练指南P228 分析:照着书上的做法,把点插入后把它后面不占优势的点删除,S.size ()就是优势的人数,时间复杂度O (nlogn) #include <bits/std ...

  4. HDU 4022 stl multiset

    orz kss太腻害了. 一.set和multiset基础 set和multiset会根据特定的排序准则,自动将元素进行排序.不同的是后者允许元素重复而前者不允许. 需要包含头文件: #include ...

  5. POJ 3253 Fence Repair C++ STL multiset 可解 (同51nod 1117 聪明的木匠)

    Fence Repair Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 53106   Accepted: 17508 De ...

  6. C++ STL multiset

    multiset的例子,允许集合内的元素是重复的 #include <iostream> #include <set> using namespace std; int mai ...

  7. 【原创】C++STL multiset

    资料来源:官方文档 multiset是一个按照特定排序储存元素的容器,多个元素可以有相同的值.元素的值即为其本身的键值.multiset中的值无法修改,可插入删除.常用于实现二叉树. 定义一个mult ...

  8. The Preliminary Contest for ICPC Asia Shenyang 2019 F. Honk's pool

    题目链接:https://nanti.jisuanke.com/t/41406 思路:如果k的天数足够大,那么所有水池一定会趋于两种情况: ① 所有水池都是一样的水位,即平均水位 ② 最高水位的水池和 ...

  9. Honk's pool(二分模板题)

    题意:有n个水池,每个水池有a[i]单位水,有k次操作,每次操作将水量最多的水池减少一单位水,水量最少的水池增加一单位水,问最后水量最大的水池和水量最少的水池相差的水量. 思路:二分最后的最大水量和最 ...

随机推荐

  1. pandas-18 reindex用法

    pandas-18 reindex用法 pandas中的reindex方法可以为series和dataframe添加或者删除索引. 方法:serise.reindex().dataframe.rein ...

  2. 【开发笔记】-Ubuntu环境命令初始化

    更新apt-get命令 apt-get update 安装yum命令 首先检测是否安装 build-essential 包 sudo apt-get install build-essential 安 ...

  3. Java 之 日期时间类

    一.Date类 1.概述 java.util.Date 类 表示特定的瞬间,精确到毫秒. 2.构造方法 public Date():分配Date对象并初始化此对象,以表示分配它的时间(精确到毫秒) p ...

  4. Java 之 自定义异常

    1.为什么需要自定义异常类 Java中不同的异常类,分别表示着某一种具体的异常情况,那么在开发中总是有些异常情况是没有定义好的,此时我们根据自己业务的异常情况来定义异常类.  一些异常都是 Java ...

  5. Java 面向对象(八) 权限修饰符 和 final、native 关键字

    一.权限修饰符 1.概述 在 Java 中提供了四种访问权限,使用不同的访问权限修饰符修饰时,被修饰的内容会有不同的访问权限: public:公共的: protected:受保护的: default: ...

  6. Java语法知识点2

    1. 基本数据类型的包装类 byte   Byte short   Short int    Integer long  Long float  Float double  Double boolea ...

  7. WinForm背景图片及图片位置

    设置背景图片:BackgroundImage属性选择对应的图片就可以了. 背景图片随窗体的变化而变化:BackgroundImageLayout属性值设置为Stretch. 窗体放置图片:Pictur ...

  8. Django之REST_FRAMEWORK 认证组件

    Django之DRF之认证组件 # from rest_framework.views import APIView # APIView 中的 dispatch 中 执行的 self.initial( ...

  9. 使用Matplotlab画图

    1.绘制折线图 #! /usr/bin/env python#encoding=utf-8 # 用于python2import sys reload(sys) sys.setdefaultencodi ...

  10. 《linux就该这么学》课堂笔记11 LVM、防火墙初识

    1.常用的LVM部署命令 功能/命令 物理卷管理 卷组管理 逻辑卷管理 扫描 pvscan vgscan lvscan 建立 pvcreate vgcreate lvcreate 显示 pvdispl ...