Codeforces Round 858:B. Mex Master
一、来源:Problem - B - Codeforces
二、题面
三、思路
题面:n个非负正数,随机排列并由相邻两个数相加构成
n-1
个数并进行升序排列,求从0开始的第一个MEX(Minimum Excluded)两种思考模型:
首先可知0的数至少要过一半,接下来
- 递归:考虑1是否能以相同情况考虑,失败
- 分类讨论:有限类
考虑了大部分情况,主要说几个错误点
- 对于0的分布
- 初始想法是只要0能被全包裹,则MEX=0,将
0 0 1
考虑为了一个特例 - 实际上,将
0 0 1
例扩展,只要0的个数小于等于1的个数最终结果即为0
- 初始想法是只要0能被全包裹,则MEX=0,将
- 对于一边比另一边多一个:还是简化为超过一半的好
- 基于0的个数已经超过
n/2
,不可能出现3的情况
- 对于0的分布
四、代码
#include <bits/stdc++.h>
#define eleType int
#define INF 0x3f3f3f3f
typedef long long ll;
using namespace std;
const int N=2e5+10;
eleType arr[N];
int main(){
int t;
cin >> t;
while(t--){
// code
int n;
cin >> n;
memset(arr,0,sizeof(int)*N);
for(int i=0;i<n;i++){
int temp;
cin >> temp;
arr[temp]++;
}
// 0 0 1模型可以延伸,0 0 1 1 0也是0,因此想要MEX=0,则的0个数<=(n+1)/2
int ans=0,left=n-arr[0];
if((n+1)/2<arr[0]){ //一边比另一边多一个:可以将逻辑简化为超过一半
if(left==0){
ans=1;
}else if(left==arr[1]){
// if(arr[1]==1){
ans=2;
// }
// else{
// ans=3; //不可能有3,因为1一件超过一半了,所以至少能将1拆开
// }
}else{
ans=1;
}
}else{
ans=0;
}
cout << ans << endl;
}
return 0;
}
Codeforces Round 858:B. Mex Master的更多相关文章
- Educational Codeforces Round 23 F. MEX Queries 离散化+线段树
F. MEX Queries time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...
- Codeforces Round #804 (Div. 2) C(组合 + mex)
Codeforces Round #804 (Div. 2) C(组合 + mex) 本萌新的第一篇题解qwq 题目链接: 传送门QAQ 题意: 给定一个\(\left [0,n-1 \right ] ...
- Codeforces Round #247 (Div. 2) ABC
Codeforces Round #247 (Div. 2) http://codeforces.com/contest/431 代码均已投放:https://github.com/illuz/Wa ...
- Codeforces Round #556 题解
Codeforces Round #556 题解 Div.2 A Stock Arbitraging 傻逼题 Div.2 B Tiling Challenge 傻逼题 Div.1 A Prefix S ...
- Codeforces Round #435 (Div. 2)【A、B、C、D】
//在我对着D题发呆的时候,柴神秒掉了D题并说:这个D感觉比C题简单呀!,,我:[哭.jpg](逃 Codeforces Round #435 (Div. 2) codeforces 862 A. M ...
- Codeforces Round #466 (Div. 2) 题解940A 940B 940C 940D 940E 940F
Codeforces Round #466 (Div. 2) 题解 A.Points on the line 题目大意: 给你一个数列,定义数列的权值为最大值减去最小值,问最少删除几个数,使得数列的权 ...
- Codeforces Round #649 (Div. 2)
Codeforces Round #649 (Div. 2) -- WKL \(\mathcal{A}\)题: \(\mathrm{XXXXX}\) Greedy implementation *12 ...
- Codeforces Round #792 (Div. 1 + Div. 2) A-E
Codeforces Round #792 (Div. 1 + Div. 2) A-E A 题目 https://codeforces.com/contest/1684/problem/A 题解 思路 ...
- Codeforces Round #792 (Div. 1 + Div. 2) // C ~ E
比赛链接:Dashboard - Codeforces Round #792 (Div. 1 + Div. 2) - Codeforces C. Column Swapping 题意: 给定一个n*m ...
- 刷题记录:Codeforces Round #724 (Div. 2)
Codeforces Round #724 (Div. 2) 20210713.网址:https://codeforces.com/contest/1536. div2明显比div3难多了啊-只做了前 ...
随机推荐
- Docker从认识到实践再到底层原理(二-1)|容器技术发展史+虚拟化容器概念和简介
前言 那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助. 高质量博客汇总 然后就是博主最近最花时间的一 ...
- 使用私有gitlab搭建gitbook持续集成
目录 环境搭建 1. 安装 Node.js 2. 安装 gitbook 3. 安装 Gitlab Runner 4. 注册Runner gitbook 配置 1. 目录结构 2. 命令行 3. 插件 ...
- 新零售SaaS架构:促销系统架构设计
促销业务概述 什么是促销? 促销是商家用来吸引消费者购物的一种手段,目的是让更多的人知道并购买他们的产品,这样就能卖得更多.促销的方法有很多种,比如,价格优惠.赠品.优惠券.折扣.买一赠一等形式. 特 ...
- 《ASP.NET Core 与 RESTful API 开发实战》-- (第9章)-- 读书笔记(上)
第 9 章 测试和文档 9.1 测试 测试是软件生命周期中的一个非常重要的阶段,对于保证软件的可靠性具有极其重要的意义 常见的测试方法有很多,根据不同的维度,可以把测试方法分为不同的类别 从观察结构的 ...
- 传统.NET应用向微服务架构迁移的实践经验--学习笔记
摘要 在本次分享中,演讲嘉宾将基于真实项目案例,剖析 .NET 应用向微服务..NET Core 等技术栈迁移的具体收益,并且分享在迁移中技术和非技术的众多考量.以及保证业务连续性的一些方法论. 议题 ...
- Java连接MySQL8.0样例代码
代码功能: 针对MySQL8.0,可以动态传入数据库连接信息(IP.端口.数据库.用户.密码).以及需要执行查询SQL. 注意:由于代码中打印表中的数据,所以最后在Main方法传入的参数是需要是查询的 ...
- C# 重绘图片.图片加字,加矩形,加圆,加线,根据XY坐标修改RGB
using System; using System.Drawing; using System.Drawing.Drawing2D; using System.IO; using System.Ne ...
- 通过解析库探究函数式抽象代价 ( ini 解析示例补充)
上一篇 用 HexColor 作为示例,可能过于简单 这里再补充一个 ini 解析的示例 由于实在写不动用其他库解析 ini 了, 春节都要过完了,累了,写不动了, 所以随意找了一份解析ini的库, ...
- 《系列一》-- 5、xml配置文件解析之[自定义]命名空间[标签]的解析
阅读之前要注意的东西:本文就是主打流水账式的源码阅读,主导的是一个参考,主要内容需要看官自己去源码中验证.全系列文章基于 spring 源码 5.x 版本. Spring源码阅读系列--全局目录.md ...
- [WEB安全] CSRF攻击和防御
一.什么是CSRF 跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或 ...