原题链接

原题大意:
给出一个长度为n的序列,你可以进行k次操作,问操作后序列内有多少个不同的数,操作如下: 序列中最小未出现的数记为a
序列中最大的数记为b 添加(a+b)/2向上取整到序列中

输入格式
输入由多个测试用例组成。第一行包含单个整数t(1≤t≤100)-测试用例的数量。测试用例的描述如下。

每个测试用例的第一行包含两个整数n,k(1≤n≤105,0≤k≤109)-多集S的初始大小以及需要执行的操作数量。

每个测试用例的第二行包含n个不同的整数a1、a2、…。,an(0≤ai≤109)-初始多集中的数字。

可以保证所有测试用例上的n之和不超过105。

输出格式
对于每个测试用例,在完成k个操作后,打印S中不同元素的数量。

Example
input

5
4 1
0 1 3 4
3 1
0 1 4
3 0
0 1 4
3 2
0 1 2
3 2
1 2 3
output
4
4
3
5
3


首先,我们可以知道每次操作添加的数不可能为a,因为b一定存在,且大于1.
所以每次操作添加的值一样。

但是还有一种情况,a=b+1,即所有数相邻,这样a会等于最大值加一,每次操作添加的值就会发生改变了,每次操作必然添加一个原序列中没有的数

AC代码:

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=1e5+3;
map<ll,int > s;
int main(){int T;scanf("%d",&T);while(T--){int n,k;s.clear();scanf("%d %d",&n,&k);ll a,b=0;int sum=0;for(int i=1;i<=n;++i){ll x;scanf("%lld",&x);if(s[x]==0)sum++;s[x]++;b=max(b,x);}a=b+1;for(int i=0;i<=b;++i)if(s[i]==0){a=i;break;}if(a<b&&k!=0){if(!s[(a+b+1)/2])sum++;}else sum+=k;printf("%d\n",sum);} return 0;
}

Codeforces Round #706 (Div. 2) B. Max and Mex相关推荐

  1. Codeforces Round #706 (Div. 2)B. Max and Mex

    Codeforces Round #706 (Div. 2)B. Max and Mex 题目 题目大意 刚开始给你n个不同的数,k次询问每次求在该序列中已存在的最大的数和不存在的最小的数(大于等于零 ...

  2. Codeforces Round #706 (Div. 2)-B. Max and Mex-题解

    目录 Codeforces Round #706 (Div. 2)-B. Max and Mex Problem Description Input Output Sample Input Sampl ...

  3. Codeforces Round #706 (Div. 2)-A. Split it!-题解

    目录 Codeforces Round #706 (Div. 2)-A. Split it! Problem Description Input Output Sample Input Sample ...

  4. Codeforces Round #381 (Div. 1) A. Alyona and mex 构造

    传送门 文章目录 题意: 思路: 题意: 你需要确定一个长度为nnn的数组aaa,满足给定的mmm个[l,r][l,r][l,r]限制,需要保证构造出来的aaa数组对于每个[l,r][l,r][l,r ...

  5. Codeforces Round #703 (Div. 2) D. Max Median

    题意:给一个长度为n的序列,对于一个区间长度不小于k的子区间,中位数为这个区间排序后的第(k+1)/2个数字.现在求所有的长度不小于k的子区间,中位数的最大值是多少. 思路:首先要想到,对于一个中位数 ...

  6. CodeCraft-22 and Codeforces Round #795 (Div. 2) D. Max GEQ Sum

    题目链接 题意 给出一个序列 aaa,判断整个序列中是否所有的区间都满足区间最大值大于等于区间和 题解 单调栈找到每个 iii 左右比 a[i]a[i]a[i] 大的第一个数的位置 l[i],r[i] ...

  7. Codeforces Round #706 (Div. 2) E. Garden of the Sun 思维构造

    传送门 题意: 给你一个n×mn×mn×m的矩阵,其中包含字符′.′'.'′.′和′X′'X'′X′,你可以将任何′.′'.'′.′改成′X′'X'′X′,现在问你能否通过修改一些′.′'.'′.′来 ...

  8. Codeforces Round #703 (Div. 2) D . Max Median 二分 +思维

    传送门 题意: 给定一个数组和k,求一段连续区间中位数最大值,连续区间长度>=k. 如果=k的话可以直接秒了,这里是>=k,我们可以通过二分让后利用>=k这个条件来检查答案. 二分中 ...

  9. Codeforces Round #506 (Div. 3)

    Codeforces Round #506 (Div. 3) 实习期间事不多,对div3 面向题解和数据编程了一波 A. Many Equal Substrings 题目链接 A题就是找后缀和前缀重合 ...

最新文章

  1. 怎么将计算机网络设置家庭,“windows无法在此计算机上设置家庭组”问题如何解决...
  2. 多线程下使用Jedis
  3. 拥抱对手 微软崛起或靠“云计算”业务
  4. set集合判断集合中是否有无元素_集合 (Set) | 一山不容二虎的 Python 数据类型
  5. Android开发之选项菜单(optinosMenu)
  6. BeetleX.WebFamily针对Web SPA应用的改进
  7. Jquery 日历控件
  8. 年末技术总结,你也参加吧!
  9. Struts2中我所遇到的内存溢出(java.lang.OutOfMemoryError)异常错误介绍
  10. 联想开机启动项按哪个_win7系统如何修改系统启动项 win7系统修改系统启动项方法【步骤】...
  11. eclipse class 中无法打断点
  12. M1芯片的Mac电脑如何进入到恢复模式?
  13. 在计算机领域提到的假说,量子力学中假说的发展及相关影响
  14. 【通信仿真】基于matlab V-BLAST结构检测算法仿真【含Matlab源码 1683期】
  15. GPS导航电文编码与校验
  16. Ubuntu18.04完全美化及常用软件安装 |QQ|TIM|微信|坚果云|备份
  17. Spring Boot系列 —(一)手把手搭建 SpringBoot 项目
  18. VS code,Live Server更改默认浏览器
  19. windows安装mongodb 时msi文件打不开解决方案
  20. MTCNN论文翻译 人脸检测

热门文章

  1. 如何读/写论文???
  2. SPSS(基础篇07)--随机数生成器
  3. CSS-12.css边框属性(border)
  4. 集中趋势中均值、中位数、众数以及偏态分布、偏度和峰度计算相关
  5. LaTeX使用笔记----中英文摘要
  6. 【分类】互联网公司分类
  7. java计算机毕业设计农村信息化管理系统源码+程序+lw文档+mysql数据库
  8. java-net-php-python-ssm宠物领养系统计算机毕业设计程序
  9. 流利说 l4测试 口语_为什么要现在开始学口语
  10. shiro 多realm报错could not be authenticated by any configured realms. Please ensure that at least o