Codeforces 1364C - Ehab and Prefix MEXs
2024-09-06 04:21:06
题意:给1e5的数组a 保证 ai <= ai+1 ai<=i
求一个一样长的数组b 使得mex(b1,b2···bi) = ai
QAQ:不知道为啥这1600分的题比赛时出不了 啊啊啊啊啊啊啊啊
题解:其实比赛的时候 就知道当前bi填的数字肯定是0,1,2...a[i] - 1中第一个没出现的数字
如果已经被填满了 就在a[i] + 1...a[n]-1中填第一个后面没出现的数字
因为显然有一个限制 你当前填的数字 不能等于后面的某一个a[i]
比赛的时候一直想一些奇奇怪怪的实现方法.. 越整越麻烦
显然bi要填满的数字就是0-a[n]-1
把数字分成两组 一组是a[i]中出现的 一组是没出现的 分别维护指针
如果a[i] > 第一组的数字 就填第二组的 ... 都填完了就选inf
填完再判断一下合法性
#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <string.h>
#include <queue>
using namespace std;
typedef long long ll;
const ll mod = 1e9 + 7;
const int MAXN = 1e5 + 5; int val[100015];
int a[MAXN];
int b[MAXN];
int c[MAXN];
int d[MAXN];
int main() {
int cn1 = 0, cn2 = 0;
int n;
cin>>n;
for(int i = 1; i <= n; i++) scanf("%d", &a[i]), val[a[i]]++; for(int i = 0; i < a[n]; i++)
if(!val[i]) d[++cn2] = i;
else c[++cn1] = i; int nl = 1, nr = 1;
for(int i = 1; i <= n; i++) {
if(nl <= cn1 && a[i] > c[nl]) b[i] = c[nl++];
else if(nr <= cn2) b[i] = d[nr++];
else b[i] = n + 5;
} memset(val, 0, sizeof(val));
int now = -1;
for(int i = 1; i <= n; i++) {
val[b[i]] = 1;
while(val[now + 1]) now += 1;
if(now + 1 != a[i]) {
puts("-1");
return 0;
}
}
for(int i = 1; i <= n; i++) printf("%d ", b[i]); puts("");
return 0;
}
最新文章
- python中列表,元组,字符串互相转换
- sqoop的使用
- Android怎么使用字体图标 自定义FontTextView字体图标控件-- 使用方法
- 戴文的Linux内核专题:06配置内核(2)
- Crawling is going on - Alpha版本使用说明
- Java中的哈希
- 内联汇编和JMP到内联函数注意事项
- delphi高手突破之异常及错误处理
- list集合为空或为null的区别
- 【BZOJ3224】【tyvj1728】普通平衡树
- 自定义shell终端提示符及颜色即修改 PS1文件 (以Centos为例)
- Xamarin Essentials教程设备信息DeviceInfo
- [转]MyEclipse8.5破解方法
- HDU1285 确定比赛问题【拓扑排序+优先队列】
- POJ 2487
- POJ 1459&;&;3436
- tomcat报错catalina.sh: line 401: /usr/java/jdk1.7.52/bin/java: No such file or directory
- Android TabHost的使用 顶部选项卡
- BASE_DIR 拼接文件路径
- SQL进阶语法的多表操作
热门文章
- 解放双手,markdown文章神器,Typora+PicGo+七牛云图床实现自动上传图片
- 笔记:学习go语言的网络基础库,并尝试搭一个简易Web框架
- 【MyBatis】MyBatis CRUD
- C++ 异常机制(上)
- memcached+magent的集群部署详细过程
- 3610:20140827:161308.483 No active checks on server: host [192.168.1.10] not found
- --safe-user-create
- Upload - Labs (下)
- C# url的编码解码,xml和json的序列化和反序列化
- 查看Java的汇编指令