Codeforces Round #615 (Div. 3)D. MEX maximizing
时间:2022-07-26
本文章向大家介绍Codeforces Round #615 (Div. 3)D. MEX maximizing,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
题目链接:https://codeforces.com/contest/1294/problem/D
题意:
给你 q 个询问和 一个 x , 每次询问输入一个数 n ,你可以把它减任意次 x 或 加任意次 x,然后添入数组,问每次询问结束时数组里最小的没出现的非负整数是多少
其实这里面的MEX函数是博弈论中sg函数的一个重要组成部分,MEX函数定义为数组里最小的没出现的非负整数
乍一看其实非常不好下手,但是条件中的任意加任意减x我们可以理解为每个数其实都具有一定的特征,我指的是ai%x,对于ai%x相同的数其实是没有差别的,因为你无限次加减嘛都一样的,所以我们就可以把每个数都压缩在[0,x-1]区间内,那我们如何检验数组里最小的没出现的非负整数呢,一个个找嘛,不会超时吗?不 我们是记忆化上一次的答案接着找,所以不会超时,只要看ans%x是不是有存在即可,但是要消耗一个ai%x,这句话需要好好理解下
其实这种题目一开始都是很难想的,感觉具体实现会非常繁琐,但是一般都要找到其不变的本质,想这道题目就是把每次需要检验的数映射到一个区间内的数,看看它存不存在,完美的利用了可以任意加任意减这个性质,我对这道题的理解大概是这样,如有不足不吝赐教
#include<bits/stdc++.h>
#define ll long long
#define rg register ll
using namespace std;
ll q,x,ans,p[400005];
int main()
{
cin>>q>>x;
for(rg i=1;i<=q;i++)
{
ll val;
cin>>val;
p[val%x]++;
while(p[ans%x])p[ans%x]--,ans++;
cout<<ans<<endl;
}
while(1)getchar();
return 0;
}
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- laravel 关联关系遍历数组的例子
- PHP开启目录引索+fancyindex漂亮目录浏览带搜索功能
- 解决Laravel 使用insert插入数据,字段created_at为0000的问题
- 关于php unset对json_encode的影响详解
- php进行md5加密简单实例方法
- Laravel timestamps 设置为unix时间戳的方法
- php实现每日签到功能
- php+redis实现消息队列功能示例
- php使用curl模拟浏览器表单上传文件或者图片的办法
- laravel框架的安装与路由实例分析
- PHP使用phpunit进行单元测试示例
- PHP+redis实现的限制抢购防止商品超发功能详解
- laravel框架查询数据集转为数组的两种方法
- phpinfo的知识点总结
- php扩展开发入门demo示例